Qt相关知识

组件

QPushButton

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QDebug>

class Widget : public QWidget
{
   
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private slots:
    void buttonClick();
private:
    QPushButton *btn;
};


#endif // WIDGET_H
#include "widget.h"


Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
   
    this->setFixedSize(960,640);//设置固定大小

//    this->showFullScreen();//全屏显示

    this->setWindowTitle("应用程序");


    btn = new QPushButton("按钮",this);//构造按钮且指定父对象this

    btn->setParent(this);//设置父对象this

    btn->setText("点击");//设置按钮显示文本内容

    btn->setToolTip("按钮");//设置按钮的提示信息

    btn->setFixedSize(100,50);//设置大小

    btn->move((this->width()-btn->width())/2,(this->height()-btn->height())/2);//移动距离

    btn->setGeometry(480-50,320-25,100,50);//设置位置及大小

    /*
     * qt工程导入图片,作为资源图片
     * 将需要的图片拷贝到项目工程代码目录
     * 在IDE中选中项目分组名,右键选择“添加新文件”
     * 选择添加的新文件模板为qt-->qt source file
     * 在资源管理界面,点击 添加-->添加前缀,前缀默认为/prefix/改为/
     * 在资源管理界面点击 添加-->添加文件,选中图片
     * ctrl+s保存
     */

    //btn->setIcon(QIcon(":/img/1.png"));// :为资源文件 /代表前缀

    this->setWindowIcon(QIcon(":/img/1.png"));

    btn->setStyleSheet("border-image:url(:/img/1.png);");//设置样式表,用于美化界面

    btn->x();
    btn->y();
    btn->pos();



    QPushButton *btn1 = new QPushButton(QIcon(":/img/1.png"),"click",this);

    /*
     * qt内存回收机制:
     * 凡是从QObject派生的子类对象,其内存资源都由父对象管理
     * 因此构造控件时,不需要手动回收资源,当父对象声明周期结束,自动回收资源
     */

    /*
     * 将btn触发的click信号与this对象的buttonClick进行关联
     * 旧风格
    */
    connect(btn,SIGNAL(clicked(bool)),this,SLOT(buttonClick()) );//参数:发送者(事件触发对象首地址),信号类型,接收者(槽函数所属对象首地址),槽函数名,连接方式
    connect(btn1,SIGNAL(clicked(bool)),this,SLOT(buttonClick()) );

    /*
     *  一个控件的一个信号可以 关联多个槽函数
     * 槽函数的参数个数应该小于等于信号的参数个数
     * 槽函数的参数类型必须与信号的参数类型保持一致
    */
}


void Widget::buttonClick()
{
   
    qDebug() << "hello world";
}

Widget::~Widget()
{
   

}

QLabel

#ifndef WIDGET_H
#define WIDGET_H
#include <QPushButton>
#include <QLabel>
#include <QMovie>

#include <QWidget>

class Widget : public QWidget
{
   
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
private slots:
    void btn_click();
private:
    QLabel *lab;
    QPushButton *btn;
};

#endif // WIDGET_H
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
   
    this->setFixedSize(960,640);

    lab = new QLabel;
    btn = new QPushButton;

    this->lab->setParent(this);
    this->btn->setParent(this);

    this->lab->setFixedSize(950,500);
    this->btn->setFixedSize(100,50);

    this->btn->setText("点击");
    this->lab->setStyleSheet("background-color:green;");

    this->lab->setAlignment(Qt::AlignCenter|Qt::AlignHCenter);//设置文字对齐方式

    this->lab->move(5,5);
    this->btn->move((this->width()-this->btn->width())/2,this->lab->height()+50);

     //connect(btn,SIGNAL(clicked(bool)),this,SLOT(btn_click()));

    /*
     * 手动关联新式风格
     * 说明触发的信号来自于哪一个类,编译时会进行类型的安全性检查
    */
     connect(btn,&QPushButton::clicked,this,&Widget::btn_click);
}

void Widget::btn_click()
{
   
    this->lab->setText("hello world");

    this->lab->setPixmap(QPixmap("1.png").scaled(lab->width(),lab->height()));//构建目录//设置label的内容为pixmap绘图
    this->lab->setPixmap(QPixmap("1.png"));

//    QMovie *move = new QMovie("3.gif");
//    this->lab->setMovie(move);
//    move->start();

    QMovie *move = new QMovie();//动态图片
    move->setFileName("3.gif");
    lab->setMovie(move);
    move->start();
}

Widget::~Widget()
{
   

}

QLineEdit

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
   
class Widget;
}

class Widget : public QWidget
{
   
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
private slots:
    void textChanged(QString text);
    void returnPressed();
};

#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include "widget.h"


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
   
    ui->setupUi(this);

    this->setFixedSize(640,480);

    ui->lineEdit->setFixedSize(200,40);

    ui->lineEdit_2->setFixedSize(ui->lineEdit->size());
    ui->lineEdit_2->move(ui->lineEdit->x(),ui->lineEdit->y()+ui->lineEdit->height()+10);

    ui->lineEdit_3->setFixedSize(ui->lineEdit->size());
    ui->lineEdit_3->move(ui->lineEdit->x(),ui->lineEdit_2->y()+ui->lineEdit_2->height()+10);

    //设置提示信息
    ui->lineEdit->setPlaceholderText("用户名");
    ui->lineEdit_2->setPlaceholderText("密码");
    ui->lineEdit_3->setPlaceholderText("验证码");

    ui->lineEdit->setAlignment(Qt::AlignRight);//向右对齐
    ui->lineEdit_2->setAlignment(Qt::AlignRight);//向右对齐
    ui->lineEdit_3->setAlignment(Qt::AlignRight);//向右对齐

    ui->lineEdit_2->setEchoMode(QLineEdit::Password);//设置显示模式 Password 密码模式
    ui->lineEdit_3->setEchoMode(QLineEdit::PasswordEchoOnEdit);//PasswordEchoOnEdit 当控件丢失焦点,控件由明文转为暗纹,且不可修改,修改会直接删除

    //由于QLineEdit::textChanged(Qstring)信号带了参数,信号触发时传递出文本数据
    //控件之间进行数据的传递,需要信号与槽来实现,不同类型的对象之间进行数据传递,也可使用信号与槽
    //当槽函数被重载后,关联信号会产生歧义
    connect(ui->lineEdit,&QLineEdit::textChanged,this,&Widget::textChanged);

    //connect(ui->lineEdit,&QLineEdit::textChanged,this,static_cast<void Widget::textChanged(QString)>&Widget::textChanged);

    connect(ui->lineEdit_2,&QLineEdit::returnPressed,this,&Widget::returnPressed);

    //信号与槽关联方式,lamda表达式,匿名函数
    //[]:代表函数名 ():代表参数列表 {}:代表函数体 &:引用匿名函数 =:将会拷贝当前类的所有数据
    connect(ui->lineEdit_3,&QLineEdit::selectionChanged,this,[&](){
   
        ui->label->setText(ui->lineEdit_3->selectedText());
    });
}

Widget::~Widget()
{
   
    delete ui;
}

void Widget::textChanged(QString text)
{
   
    ui->label->setText(text);
}

void Widget::returnPressed()
{
   
    ui->label->setText(ui->lineEdit_2->text());
}

QCheckBox

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
   
class Widget;
}

class Widget : public QWidget
{
   
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

#include <QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
   
    ui->setupUi(this);

    //当用户勾选或取消时,触发stateChanged(int)信号
    connect(ui->checkBox,&QCheckBox::stateChanged,this,[&](int state){
   
       qDebug() << state;
//       if(state == Qt::Checked)
//       {
   
//           ui->lineEdit->setText("勾选");//state == 2
//       }
//       else if(state == Qt::Unchecked)
//       {
   
//           ui->lineEdit->setText("未勾选");//state == 0
//       }
    });

    connect(ui->pushButton,&QPushButton::clicked,this,[&](){
   
        if(ui->checkBox->isChecked())//判断复选框是否被选中,选中返回true
        {
   
            ui->label->setText(ui->lineEdit->text());
        }
        else
        {
   
            //ui->checkBox->setChecked(true);//设置为勾选,不更改内部状态
            ui->checkBox->setCheckState(Qt::Checked);//设置为勾选,更改内部状态
        }

    });
}

Widget::~Widget()
{
   
    delete ui;
}

QRadioButton

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QGroupBox>

namespace Ui {
   
class Widget;
}

class Widget : public QWidget
{
   
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
   
    ui->setupUi(this);
}

Widget::~Widget()
{
   
    delete ui;
}

void Widget::on_pushButton_clicked()
{
   
    if(ui->radioButton->isChecked())//isChecked判断单选按钮是否被选中
    {
   
        ui->label->setText("A");
    }
    if(ui->radioButton_2->isChecked())
    {
   
        ui->label->setText("B");
    }
    if(ui->radioButton_3->isChecked())
    {
   
        ui->label->setText("C");
    }
    if(ui->radioButton_4->isChecked())
    {
   
        ui->label->setText("D");
    }
    QGroupBox group;
}

其他

QLayout

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QTextEdit>
#include <QLayout>

namespace Ui {
   
class Widget;
}

class Widget : public QWidget
{
   
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
private:
    QPushButton *btn_1;
    QPushButton *btn_2;
    QPushButton *btn_3;
    QPushButton *btn_4;
    QPushButton *btn_5;

    QTextEdit *text;

    QHBoxLayout *hlayout;
    QVBoxLayout *vlayout;
    QGridLayout *glayout;
};

#endif // WIDGET_H
#include "
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值