Qad中的QRadioButton检查/取消选中问题

use*_*217 6 qt

我发现与检查/取消检查QRadioButton相关的问题.我用于检查(白点)和取消选中(没有白点)的图像不会更新.我的问题是:我已经实现了很少的QRadioButton(s).所有QRadioButtons首次检查为false.所以这种情况下的图像没有白点.当用户选择任何QRadioButton时,它的图像会变为另一个,即带有白点的图像.在按钮上单击,我将单选按钮的状态从已选中状态重置为取消选中状态.然而,图像状态没有改变.他们仍然处于检查状态.代码段如下:

码:

if(ui->radioButtonReadOnlineData->isChecked())
    ui->radioButtonReadOnlineData->setChecked(false);
if(ui->radioButtonSavetoDBReadOfflineData->isChecked())
    ui->radioButtonSavetoDBReadOfflineData->setChecked(false);
if(ui->radioButtonViewLocalData->isChecked())
    ui->radioButtonViewLocalData->setChecked(false);
if(ui->radioButtonDateRange->isChecked())
    ui->radioButtonDateRange->setChecked(false);
if(ui->radioButtonAll->isChecked())
    ui->radioButtonAll->setChecked(false);
Run Code Online (Sandbox Code Playgroud)

每个QRadioButtons的图像设置如下:

码:

ui->radioButtonAll->setStyleSheet(
            "QRadioButton::indicator::checked { image: url(:/Resources/radio-btn-selected.png);}"
            "QRadioButton::indicator::unchecked {image: url(:/Resources/radio-btn-unselected.png);}"
            );
Run Code Online (Sandbox Code Playgroud)

有关QRradioButton图像未更新的任何线索.谢谢.

Kri*_*fer 13

您的问题很可能与此有关

setAutoExclusive(布尔)

默认情况下,属于同一父项的所有按钮的行为就像它们是同一个独占按钮组的一部分一样.选择一个后,您无法返回所有按钮未选中状态.

解决方法是查找选中的按钮,并为该按钮执行以下操作

theSelectedButton->setAutoExclusive(false);
thsSelectedButton->setChecked(false);
theSelectedButton->setAutoExclusive(true);
Run Code Online (Sandbox Code Playgroud)

请查看这些链接以获取更多信息:

http://developer.qt.nokia.com/forums/viewthread/5482

http://www.qtforum.org/article/19619/qradiobutton-setchecked-bug.html


UmN*_*obe 0

确保您的资源文件如下所示:

<qresource>
   <file>Resources/radio-btn-selected.png</file>
   <file>Resources/radio-btn-unselected.png</file>
</qresource>
Run Code Online (Sandbox Code Playgroud)

并且它已正确包含在您的申请中。

  • 要么.qrc在你的.pro文件中包含
 RESOURCES = myresource.qrc
Run Code Online (Sandbox Code Playgroud)
  • 创建一个外部二进制资源文件,然后在运行时注册它
QResource::registerResource("/path/to/myresource.rcc");
Run Code Online (Sandbox Code Playgroud)
  • 或者,如果您正在使用设计器,您可以这样做。