按Qt中的按钮启用bool变量

时间:2016-04-14 09:24:19

标签: c++ qt

如何将变量链接到按钮,以便在按下按钮时首次启用为true,在第二次按下时启用为假,等等?

我想使用它,因为在我的程序中,当按下按钮时应执行某个循环,以便将变量启用为true。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

为了实现这一目标,您需要将from xml.dom.minidom import parseString xmlFile = open('prova.xml','r') data = xmlFile.read() xmlFile.close() dom = parseString(data) for contatti in dom.getElementsByTagName('ContactItem'): if (len(contatti.getElementsByTagName('FIELDS')) > 2): print (contatti.getElementsByTagName('Calendar')[0].firstChild.nodeValue) 信号(clicked()固有的)连接到您的插槽。然后,在此插槽中,您只需在每次进入此插槽时更改对象的布尔值。这是您需要的代码。

在你的.h文件中:

QPushButton

在.cpp中:

private:
    bool           bForButton;
    QPushButton*   m_button; 

public slots :
    void onClicked();

这样,您会注意到我们将布尔值更改为相反的布尔值,因此每次单击按钮时它都会更改。

答案 1 :(得分:0)

您可以显示一个保持状态(已选中或未选中)的按钮,因此每次单击状态更改时,用户都可以看到当前状态。

您可以通过设置按钮setCheckable(true)并在循环中测试isChecked()的值来实现这一目标。该按钮将保持已选中状态并自动点击更新,因此您无需任何额外代码。

答案 2 :(得分:0)

QPushButton 这样的变量,即checked属性。

您可以将需要运行的循环连接到toggled信号:

auto button = new QPushButton(this);
button->setCheckable(true);

...

connect(button, &QAbstractButton::toggled,
    this, &ThisClass::executeLoop);

...
void ThisClass::executeLoop(bool checked) {
    if (!checked) return;
    .... your function body
}

http://doc.qt.io/qt-5/qabstractbutton.html#checked-prop

这更像是Qt的思维方式:不要循环/旋转/锁定/ ......,只是对框架触发的事件作出反应(即将信号连接到插槽)。