• Qt—QCheckBox 使用总结


    转载自[一去、二三里]的Qt 之 QCheckBox

    简述

    QCheckBox 继承自 QAbstractButton,它提供了一个带文本标签的复选框。

    QCheckBox(复选框)和QRadioButton(单选框)都是选项按钮。这是因为它们都可以在开(选中)或者关(未选中)之间切换。区别是对用户选择的限制:单选框定义了 “多选一” 的选择,而复选框提供的是 “多选多” 的选择。

    尽管在技术上可以通过复选框来实现单选框的行为,反之亦然,但还是强烈建议使用众所周知的约定。

    详细描述

    只要复选框被选中或者清除,都会发射一个 stateChanged() 信号。如果想在复选框状态改变的时候触发一个行为,请连接这个信号,可以使用 isChecked() 来查询复选框是否被选中。

    除了常用的选中和未选中两个状态,QCheckBox 还可选地提供了第三种状态(半选)来表明 “没有变化”。当需要给用户一个选中或者未选中复选框的选择时,这是很有用的。如果需要第三种状态,可以通过 setTristate() 来使它生效,并使用 checkState() 来查询当前的切换状态。

    和 QPushButton 一样,复选框可以显示文本或者图标。文本可以通过构造函数或者 setText() 来设置,图标可以通过 setIcon() 来设置。

    QCheckBox *checkbox = new QCheckBox("C&ase sensitive", this);
    

    共有函数

    • Qt::CheckState checkState() const

      返回复选框的选中状态。如果不需要三态的支持,可以使用QAbstractButton::isChecked(),它返回一个布尔值。

    • bool isTristate() const
      复选框是否为一个三态复选框。默认的是false,也就是说复选框只有两个状态。

    • void setCheckState(Qt::CheckState state)
      设置复选框的选中状态。如果不需要三态的支持,可以使用QAbstractButton:setChecked(),它接受一个布尔值。

    • void setTristate(bool y = true)
      设置复选框为一个三态复选框。

    信号

    • void stateChanged(int state)
      当复选框状态发生改变,这个信号就会被发射。即:用户选中或者取消选中。

    示例

    构造一个复选框 QCheckBox,然后使用 setTristate() 开启三态模式。

    QCheckBox *pCheckBox = new QCheckBox(this);
    m_pLabel = new QLabel(this);
    
    m_pLabel->setText("Click CheckBox...");
    pCheckBox->setText(QString::fromLocal8Bit("三态复选框"));
    
    // 开启三态模式
    pCheckBox->setTristate();  
    
    // 连接信号槽
    connect(pCheckBox, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int)));
    

    槽函数,判断当前复选框状态,其中包括:选中(Qt::Checked)、半选(Qt::PartiallyChecked)、未选中(Qt::Unchecked)。

    void MainWindow::onStateChanged(int state)
    {
        if (state == Qt::Checked) // "选中"
        {
            m_pLabel->setText("Checked");
        }
        else if(state == Qt::PartiallyChecked) // "半选"
        {
            m_pLabel->setText("PartiallyChecked");
        }
        else // 未选中 - Qt::Unchecked
        {
            m_pLabel->setText("Unchecked");
        }
    }
    

    QSS

    复选框样式。

    QCheckBox{
            spacing: 5px;
            color: white;
    }
    QCheckBox::indicator {
             17px;
            height: 17px;
    }
    QCheckBox::indicator:enabled:unchecked {
            image: url(:/Images/checkBox);
    }
    QCheckBox::indicator:enabled:unchecked:hover {
            image: url(:/Images/checkBoxHover);
    }
    QCheckBox::indicator:enabled:unchecked:pressed {
            image: url(:/Images/checkBoxPressed);
    }
    QCheckBox::indicator:enabled:checked {
            image: url(:/Images/checkBoxChecked);
    }
    QCheckBox::indicator:enabled:checked:hover {
            image: url(:/Images/checkBoxCheckedHover);
    }
    QCheckBox::indicator:enabled:checked:pressed {
            image: url(:/Images/checkBoxCheckedPressed);
    }
    QCheckBox::indicator:enabled:indeterminate {
            image: url(:/Images/checkBoxIndeterminate);
    }
    QCheckBox::indicator:enabled:indeterminate:hover {
            image: url(:/Images/checkBoxIndeterminateHover);
    }
    QCheckBox::indicator:enabled:indeterminate:pressed {
            image: url(:/Images/checkBoxIndeterminatePressed);
    }
    

  • 相关阅读:
    主线程到子线程的相互切换
    IOS通过OTA部署App
    IOS应用之间调用
    静态库详解
    ObjectC的函数调用机制详解消息
    iOS6新特征:参考资料和示例汇总
    杭电acm2025
    杭电acm2051
    杭电acm1009
    杭电acm2099
  • 原文地址:https://www.cnblogs.com/linuxAndMcu/p/13356329.html
Copyright © 2020-2023  润新知