我想创建一个名为“Show Captions”的QCheckBox,在第一个选中时禁用另一个名为“如果没有标题时显示标题”的QCheckBox,但我的问题是当用户检查第一个复选框时我怎么能立即禁用它
SetupSlideShow::SetupSlideShow(QWidget* parent)
: QScrollArea(parent), d(new SetupSlideShowPriv)
{
QWidget* panel = new QWidget(viewport());
setWidget(panel);
setWidgetResizable(true);
QVBoxLayout* layout = new QVBoxLayout(panel);
d->showComment = new QCheckBox(i18n("Show captions"), panel);
d->showComment->setWhatsThis( i18n("Show the image caption at the bottom of the screen."));
d->showTitle = new QGroupBox(i18n("Show title"), panel);
d->showTitle->setWhatsThis( i18n("Show the image title at the bottom of the screen."));
d->showTitle->setCheckable(true);
d->showCapIfNoTitle = new QCheckBox(i18n("Show captions if no title"), panel);
d->showCapIfNoTitle->setWhatsThis( i18n("Show the image caption at the bottom of the screen if no titles existed."));
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(d->showCapIfNoTitle);
d->showTitle->setLayout(vbox);
layout->addWidget(d->showLabels);
layout->addWidget(d->showComment);
layout->addWidget(d->showTitle);
}
答案 0 :(得分:3)
这不起作用吗?
connect(d-> showComment,SIGNAL(toggled(bool)),d-> showCapIfNoTitle,SLOT(setDisabled(bool)));
答案 1 :(得分:1)
对paintEvent()
的调用对于即时性并没有真正为你做任何事情。在控件返回事件循环之后(在构造函数退出之后),不会重新绘制任何内容。调用update()
更为典型,但在更改内置小部件的属性时,这是不必要的。
要关联复选框,请为stateChanged()
showComment
信号定义一个插槽,将信号连接到上方构造函数中的插槽(通过调用connect()
,并在该插槽中,拨打d->showCapIfNoTitle->setCheckState(d->showComment->checkState())
。