QT控件认识
QT控件认识
学习控件需要培养起来查帮助文档的习惯
首先我们查父类,按照以下顺序
信号->槽函数->public function->others
按钮
QAbstractButton
槽函数
信号
QPushButton
普通的按钮,继承于QAstrctButton
下面是具体的用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33qtTest_control::qtTest_control(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//普通按钮
ui.nomalBtu->setText("屌丝");
ui.nomalBtu->setIcon(QIcon(":/1"));
//check按钮
ui.checkBtn->setCheckable(true);//设置成可选中的状态,也就是颜色会加深
ui.checkBtn->setText("屌丝二号");
ui.checkBtn->setIcon(QIcon(":/2"));
connect(ui.checkBtn, &QPushButton::toggled, this, [=]() {
QMessageBox::information(this, "check","你是大屌丝二号");
});//当点击的是子图标,发出信号
//关联按钮
QMenu* menuForwithMenu = new QMenu(nullptr);
QAction* act1=menuForwithMenu->addAction(QIcon("://3"), "选项一");
ui.withMenu->setMenu(menuForwithMenu);
connect(act1, &QAction::triggered, this, [=]() {
QMessageBox::information(this, "选项", "这个是选项一");
});
}
QToolButton
加强版的QPushButton,并且做的更漂亮
设置图标的方式
下面是一些具体的做法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27//toolButton 图片
QAction* atc2 = new QAction(QIcon(":/4"),"图片按钮");
ui.pictureToolBtn->setDefaultAction(atc2);
connect(atc2, &QAction::triggered, this, [=]() {
atc2->setIcon(QIcon(":/5"));
atc2->setText("新的图片");
});
ui.pictureToolBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
//toolButton 箭头
ui.arrowBtn->setArrowType(Qt::UpArrow);
ui.arrowBtn->setText("向上");
ui.arrowBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
connect(ui.arrowBtn, &QToolButton::clicked, this, [=]() {
if (ui.arrowBtn->arrowType() == Qt::UpArrow) {
ui.arrowBtn->setArrowType(Qt::DownArrow);
ui.arrowBtn->setText("向下");
ui.arrowBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
}
else {
ui.arrowBtn->setArrowType(Qt::UpArrow);
ui.arrowBtn->setText("向上");
ui.arrowBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
}
});由于这个button和pushButton的效果都差不多,就只描述了不一样的一些东西
下面是他们的样子
弹出菜单的形式以及clicked信号的捕捉
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25// toolButton 弹出菜单
ui.menuToolBtn->setMenu(menuForwithMenu);
/*
弹出菜单的弹出模式是一个枚举类型: QToolButton::ToolButtonPopupMode, 取值如下:
- QToolButton::DelayedPopup:
- 延时弹出, 按压工具按钮一段时间后才能弹出, 比如:浏览器的返回按钮
- 长按按钮菜单弹出, 但是按钮的 clicked 信号不会被发射
- QToolButton::MenuButtonPopup:
- 在这种模式下,工具按钮会显示一个特殊的箭头,表示有菜单。
- 当按下按钮的箭头部分时,将显示菜单。按下按钮部分发射 clicked 信号
- QToolButton::InstantPopup:
- 当按下工具按钮时,菜单立即显示出来。
- 在这种模式下,按钮本身的动作不会被触发(不会发射clicked信号
*/
//检测什么时候有信号
ui.menuToolBtn->setPopupMode(QToolButton::InstantPopup);
connect(ui.menuToolBtn, &QToolButton::clicked, this, [=]() {
QMessageBox::information(this, "成功", "检查到信号");
});
//检查结果,默认的延迟菜单,当点击的时候有信号但是我们长安的时候没有信号(QToolButton::DelayedPopup:)
// 当带有箭头的按钮的时候,点击非按钮区有信号,点击箭头没有信号( - QToolButton::MenuButtonPopup:)
// 无论什么形式的点击都不会有信号(QToolButton::InstantPopup:)
//
QRadioButton
这个按钮是一个单选按钮,没有自己的信号,槽函数,和公共函数,所有的东西都是继承于QAbstractButton
,主要是用于按钮组当中
对于单选按钮的分组,通常将按钮放置于不同的容器当中,每个容器当中的按钮就是一组
通常使用下面这个容器,因为可以提供标题
QCheckBox
复选框按钮,也就是支持多选
对于单选按钮来说,QCheckBox支持选中后取消选中
QT控件认识
https://tsy244.github.io/2023/08/03/QT/QT控件认识/