Отключение QCheckbox хитрым способом - PullRequest
0 голосов
/ 17 декабря 2011

Я хочу, чтобы 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);
}

Ответы [ 2 ]

3 голосов
/ 17 декабря 2011

Разве это не работает?

connect (d-> showComment, SIGNAL (переключено (bool)), d-> showCapIfNoTitle, SLOT (setDisabled (bool)));

1 голос
/ 17 декабря 2011

Звонок на paintEvent() на самом деле ничего не делает для вас в отношении непосредственности.Ничто не будет перекрашено, пока управление не вернется в цикл обработки событий (после выхода из вашего конструктора).Более типично вызывать update(), но даже это не нужно при изменении свойств встроенных виджетов.

Чтобы связать флажки, определите слот для сигнала stateChanged() showComment, подключитесигнал для вашего слота в вашем конструкторе выше (вызывая connect(), и в этом слоте, позвоните d->showCapIfNoTitle->setCheckState(d->showComment->checkState()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...