Qt初学者使用教程(一)

183 阅读6分钟

Qt初学者使用(一)

用于技术分析和总结,充分发挥技术的白嫖,同时也是提升自己的写作水平,可以更好的看到自己缺点,同时如果有小伙伴们有什么不懂或者需要改善的,可以私下评论,我们一起共同进步,当前文章会持续的更新完善。

1、当前环境

2、创建第一个QT程序

item1.png

item2.png

item3.png

QMainWindow是具备工具栏和状态栏的窗口,继承QWidgetQWidget是普通的窗口,QDialog是一个对话框,也称弹窗,也继承了QWidget,我们这里就选择了QMainWindow

item4.png

注意,这里编译的时候选择release,如果选择debug模式,当你正式上线选择release,你会发现可能运行失败,这是qt工具没做好的地方

3

成功运行的效果图

item5.png

3、目录结构

image.png

headers目录:存放头文件
sources目录:存放源码
forms目录:存放设计界面,带.ui都是设计界面
resource目录:存放资源文件的

4、添加资源文件

image.png

image.png

image.png

选择添加前缀

image.png

image.png

选择添加文件

image.png

这就算添加资源成功过了

image.png

资源路径

image.png

组件的使用

1、获取UI界面的组件对象

在设计师面板我们可以看到我们的组件,而红色方框圈起来的就是对象名称

image.png

进入我们的源码界面mainwindow.cpp文件中,因为控件都是在mainwindow.ui里面,所以要获取控件应该去mainwindow.cpp


//通过 ui->对象名称
qDebug() << ui->pushButton->text();  //拿到按钮对象,并且输出按钮名称 qDebug() 是控台输出函数

2、Button区的使用

image.png

运行的效果

image.png

2.1 QPushButton

设置按钮的文本和背景色

//设置按钮文字
ui->pushButton->setText("哈哈哈");
//获取按钮文字
ui->pushButton->text()

//设置按钮样式,背景色更改为红色
ui->pushButton->setStyleSheet("QPushButton{background-color: rgb(255, 0, 0);}");

image.png

设置按钮的禁用

//禁用按钮
ui->pushButton->setEnabled(false);

image.png

设置按钮的图标


QIcon icon(":/image/avatar.jpg"); //资源路径怎么导入可以观看(4、添加资源文件) 
ui->pushButton->setIcon(icon);

image.png

文字提示

 ui->pushButton->setToolTip("按钮文字提示");//设置文字提示

image.png

信号与槽

image.png

2.2 QToolButton

设置按钮的文本和禁用

ui->toolButton->setText("哈哈哈"); //设置文本
ui->toolButton->setEnabled(false); //禁用按钮

image.png

设置按钮的图标


    QIcon icon(":/image/avatar.jpg");
    ui->toolButton->setIcon(icon); //设置图标

image.png

设置按钮的弹出菜单
QToolButton 提供了三种弹出模式:
DelayedPopup(默认) :点击后稍微延迟才显示菜单。
InstantPopup:点击后立即显示菜单。
MenuButtonPopup:仅当点击菜单按钮时才显示菜单(按钮旁边会显示一个小箭头)。

    QMenu * menu = new QMenu(ui->toolButton);
    menu->addAction("菜单1");
    menu->addAction("菜单2");
    ui->toolButton->setMenu(menu); // 设置下拉菜单
    ui->toolButton->setPopupMode(QToolButton::InstantPopup); // 设置菜单按钮弹出模式
    
    //绑定菜单点击信号
    connect(menu,&QMenu::triggered,this,[=](QAction * action){
        qDebug() << "action " << action->text();  //输出点击的菜单
    });

image.png

自动提升

当鼠标指针悬停在 QToolButton 上时,它会自动以轻微的阴影效果提升(即略微突出显示),以表明它是可以点击的。

    ui->toolButton->setAutoRaise(true); // 启用自动提升

image.png

image.png

文字提示
当用户将鼠标悬停在按钮上时,会显示这个提示

ui->toolButton->setToolTip("设置工具提示"); // 设置工具提示

image.png

信号与槽

image.png

2.3 QRadioButton

设置单选按钮的文本标签

ui->radioButton->setText("单选框");

image.png

设置单选按钮是否被选中

ui->radioButton->setChecked(true);

image.png

设置单选按钮的图标和图标大小

ui->radioButton->setText("设置图标");
QIcon icon(":/image/avatar.jpg");
ui->radioButton->setIcon(icon);
ui->radioButton->setIconSize(QSize(30,30));

image.png

设置单选按钮是否自动排除其他已选中的单选按钮

设置为false我们可以看到,变成了多选框的特效,不会排斥其他单选框

ui->radioButton->setAutoExclusive(false);
ui->radioButton_2->setAutoExclusive(false);
ui->radioButton_3->setAutoExclusive(false);

image.png

QButtonGroup的使用场景

当我们有多个单选项的时候,我们发现,不能独立的选择,只能选择一个,这时候我们的QButtonGroup就派上用场了

image.png

QButtonGroup * left_group = new QButtonGroup(this);
QButtonGroup * right_group = new QButtonGroup(this);
//左边
left_group->addButton(ui->radioButton);
left_group->addButton(ui->radioButton_2);
left_group->addButton(ui->radioButton_3);
//右边
right_group->addButton(ui->radioButton_4);
right_group->addButton(ui->radioButton_5);
right_group->addButton(ui->radioButton_6);

image.png

最后还有一种方式也实现我们的效果,需要去我们的设计界面,然后使用垂直布局把他们分开也可以达到我们的效果

image.png

信号与槽

image.png

2.4 QCheckBox

设置文本、设置选中

ui->checkBox->setText("多选框");
ui->checkBox->setChecked(true);

image.png

设置三态

设置复选框是否允许有第三种状态。如果参数为true,则启用三态模式;如果为false,则复选框只有两种状态(选中或未选中)。

ui->checkBox->setTristate(true);
//监听可选框的状态改变信号
connect(ui->checkBox,&QCheckBox::stateChanged,this,[=](int state){
    // 根据复选框的状态更新标签文本
    if (state == Qt::Checked) ui->checkBox_2->setText("Checked");
    else if(state == Qt::PartiallyChecked) ui->checkBox_2->setText("PartiallyChecked");
    else ui->checkBox_2->setText("Unchecked");

});

image.png

image.png

image.png

信号与槽

image.png

2.5 QCommandLinkButton

设置文本、描述、图标

ui->commandLinkButton->setText("保存文件"); //设置文本
ui->commandLinkButton->setDescription("点击保存当前文件。"); //设置描述

//设置图标
QIcon icon(":/image/avatar.jpg");
ui->commandLinkButton->setIcon(icon);
ui->commandLinkButton->setIconSize(QSize(30,30)); //设置图标大小

image.png

2.6 QDialogButtonBox(几乎用不到)

image.png