【问题标题】:How to disable a QPushButton when deselect a QCheckBox取消选择 QCheckBox 时如何禁用 QPushButton
【发布时间】:2017-07-28 12:57:05
【问题描述】:

我在一个 Qt 项目中工作,用户可以通过选择或取消选择 QCheckBox 来启用或禁用 QPushButton。
我已经开发了一个鼠标事件启用 QPushButton 的功能,但问题是当我取消选择 QCheckBox 时,QPushButton 仍然处于启用状态。
当 QCheckBox 未选中时,是否有 Qt 功能可以禁用按钮?

这是我写的代码:

//Class.h
//Function to enable the button
private slots:
   void on_QCheckBox_clicked();
//Class.cpp
void class::on_QCheckBox_clicked() {
  ui->QPushButton->setEnabled(true);
  //Here i enabled the button with setEnabled function
}

【问题讨论】:

  • 您能否分享您的完整代码,以便我们检查。
  • 这是代码的相关部分...其他与这个问题无关。
  • 有一个名为 QCheckBox::stateChanged(int state) 的信号,你应该使用它。您还应该提供将信号连接在一起的代码
  • Qt5: QObject::connect(pQTglBtnEn, &QCheckBox::toggled, pQBtn, &PushButton::setEnabled);QCheckBox *pQTglBtn;QPushButton *pQBtn;
  • Qt4: QObject::connect(pQTglBtnEn, SIGNAL(toggled(bool)), pQBtn, SLOT(setEnabled(bool)));QCheckBox *pQTglBtn;QPushButton *pQBtn;

标签: c++ qt qpushbutton qcheckbox


【解决方案1】:

感谢@Scheff!

我通过使用QObject::connect() 将我的 QCheckBox 和我的 QPushButton 连接在一起解决了

这是一个例子:

class::class() {
  QObject::connect(ui->QCheckBox, &QCheckBox::toggled, ui->QPushButton, &QPushButton::setEnabled);
  //Where ui->QCheckBox is the checkbox and ui->QPushButton is your button
}

【讨论】:

  • 你真的把你的对象命名为QCheckBoxQPushButton吗?这真是令人困惑。
  • 天哪,这只是为了这个网站 ;-)
  • @CMz 所以你给他们起个可怕的名字只是为了迷惑这里的每个人?请改变它。这真的很糟糕,任何人都会读到这篇文章。
【解决方案2】:

您可以使用QCheckBox::checkState()检查状态,如下所示:

if (QCheckBox->checkState() == Qt::Unchecked)
{
    ui->QPushButton->setEnabled(false);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-15
    • 2021-10-29
    • 2012-11-18
    • 1970-01-01
    • 2013-12-02
    • 2016-10-04
    • 1970-01-01
    • 2014-07-23
    相关资源
    最近更新 更多