查看完整版本: [-- QCheckBox 的状态翻转的问题 --]

QTCN开发网 -> 《C++ GUI Qt 4编程》(第2版)专栏 -> QCheckBox 的状态翻转的问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

东风唯笑 2017-03-24 22:01

QCheckBox 的状态翻转的问题

我今天在一个工程中涉及一个 checkbox 的状态处理,但是出现问题,以下是一个最小化的代码:
(新建工程,添加一个 checkbox,使用状态翻转检测的槽):
  1. void MainWindow::on_checkBox_stateChanged(int arg1)
    {
        disconnect(ui->checkBox,SIGNAL(QCheckBox::stateChanged(int)),
                   this,SLOT(on_checkBox_stateChanged(int)));
        ui->checkBox->setChecked(false);
        QMessageBox::critical(NULL, tr("Test"), tr("Test"),
                              QMessageBox::Yes, QMessageBox::Yes);
        connect(ui->checkBox,SIGNAL(QCheckBox::stateChanged(int)),
                this,SLOT(on_checkBox_stateChanged(int)));
    }
根据代码,应该在每一次点击 checkbox 之后,都会弹出一个警告框,但是实际上现在是每隔一次才能弹出警告框。不知道是我这里写的有问题,还是关于 checkbox 有我没有注意的地方。


fu22507411 2017-03-25 00:37
QCheckBox有个tristate的属性,你把它勾上就行了

东风唯笑 2017-03-25 09:44
fu22507411:QCheckBox有个tristate的属性,你把它勾上就行了 (2017-03-25 00:37) 

你好,这个checkbox 我仅想要使用它的2态,而不是三态。根据我的代码,目标是每一次点击 checkbox 都应该有警告框弹出,但是实际上现在是隔一次弹出一次。

fu22507411 2017-03-25 20:41
你每次都设成false了是不是三态有什么区别

东风唯笑 2017-03-25 21:18
fu22507411:你每次都设成false了是不是三态有什么区别 (2017-03-25 20:41) 

不行啊,我这里仅仅是举出例子,实际工程中在某些情况下是可以勾选的。

fu22507411 2017-03-26 15:58
如果要每次点击都响应的话用clicked信号

东风唯笑 2017-03-28 16:19
fu22507411:如果要每次点击都响应的话用clicked信号 (2017-03-26 15:58) 

但是为什么statechange信号不能这样使用呢,是库的bug,还是我本身的使用有问题.

我是用已有的工程中最小化出这样的一个例子,实际使用中,我无法保证clicked一定能够使得代码契合(比如变成三态了...).


查看完整版本: [-- QCheckBox 的状态翻转的问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled