qt — QPushButton、QToolButton、QCheckBox、QRadioButton、QButtonGroup

1、QPushButton

普通按钮,可以提供文字,图标都在按钮上。可以设置一定的界面风格。

1
2
ui->pushButton->setCursor(QCursor(Qt::PointingHandCursor));
//设置光标,手型图标。鼠标在控件上显示。

checkable 属性 :
只有setCheckable(true),这个button才能发射 toggle(bool) 信号。
而toggle(bool)代表了button 按下,弹起的状态像0,1的切换开关。
setCheckable(true)为属性,表示可以选中 setChecked(true)为属性的值,表示已经选中

2、QToolButton

QToolButton类提供了一个快速访问命令或选项的按钮,通常在QToolBar中使用。工具按钮是一种特殊的按钮,提供对特定命令或选项的快速访问。与普通的命令按钮不同,工具按钮通常不显示文字,而是显示一个图标。

此按钮功能比QPushButton多。

3、QCheckBox

复选框

复选框被选中或者清除,都会发射一个stateChanged()信号。

使用isChecked()来查看特定按钮是否被选中。

使用setTristate()函数开启三种状态模式。包括:选中(Qt::Checked)、半选(Qt::PartiallyChecked)、未选中(Qt::Unchecked)。

1
2
3
4
// 开启三态模式
pCheckBox->setTristate();  
// 连接信号槽
connect(pCheckBox, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int)));

槽函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void MainWindow::onStateChanged(int state)
{
    if (state == Qt::Checked) // "选中"
    {
       qDebug()<<"Checked";
    }
    else if(state == Qt::PartiallyChecked) // "半选"
    {
        qDebug()<<"PartiallyChecked";
    }
    else // 未选中 - Qt::Unchecked
    {
        qDebug()<<"Unchecked";
    }
}

4、QRadioButton

带有文本标签的单选按钮

一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一个单选框。

单选框默认开启自动互斥(autoExclusive)。如果启用了自动互斥,属于同一个父部件的单选框的行为就和属于一个互斥按钮组的一样。如果你需要为属于同一父部件的单选框设置多个互斥按钮组,把它们加入QButtonGroup中。

每当一个按钮切换选中或未选中状态时,会发出的toggled()信号。

使用isChecked()来查看特定按钮是否被选中。

1
2
3
4
5
6
QRadioButton::indicator:unchecked {
    image: url(:/Images/switchOff);
}
QRadioButton::indicator:checked {
    image: url(:/Images/switchOn);
}

5、QButtonGroup

提供 一个抽象的按钮容器,可以将多个按钮划分为一组,不具备可视化的效果,一般放的都是可以被检查的按钮。

QButtonGroup可以在整数和按钮之间进行映射。您可以使用setId()为按钮分配一个整数id,并使用id()检索它。当前选中的按钮的id可用checkedId(),并且有一个重载的信号buttonClicked()发出按钮的id。id -1是QButtonGroup保留的,表示“没有这样的按钮”。映射机制的目的是简化用户界面中枚举值的表示。