• 2566阅读
  • 6回复

[提问]QCheckBox 的状态翻转的问题 [复制链接]

上一主题 下一主题
离线东风唯笑
 

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

离线fu22507411

只看该作者 1楼 发表于: 2017-03-25
QCheckBox有个tristate的属性,你把它勾上就行了
邮箱jiahao_coffee@foxmail.com 有问题可以免费咨询,有空都会回答,不过太难了我答不上来不要介意哈
离线东风唯笑

只看该作者 2楼 发表于: 2017-03-25
回 fu22507411 的帖子
fu22507411:QCheckBox有个tristate的属性,你把它勾上就行了 (2017-03-25 00:37) 

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

只看该作者 3楼 发表于: 2017-03-25
你每次都设成false了是不是三态有什么区别
邮箱jiahao_coffee@foxmail.com 有问题可以免费咨询,有空都会回答,不过太难了我答不上来不要介意哈
离线东风唯笑

只看该作者 4楼 发表于: 2017-03-25
回 fu22507411 的帖子
fu22507411:你每次都设成false了是不是三态有什么区别 (2017-03-25 20:41) 

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

只看该作者 5楼 发表于: 2017-03-26
如果要每次点击都响应的话用clicked信号
邮箱jiahao_coffee@foxmail.com 有问题可以免费咨询,有空都会回答,不过太难了我答不上来不要介意哈
离线东风唯笑

只看该作者 6楼 发表于: 2017-03-28
回 fu22507411 的帖子
fu22507411:如果要每次点击都响应的话用clicked信号 (2017-03-26 15:58) 

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

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