Qt: Настройки не восстанавливаются через механизм сигналов и слотов - PullRequest
1 голос
/ 31 января 2012

В моем приложении Text Editor я сохраняю выбор формата шрифта пользователя в качестве предпочтения.

Сигналы и слоты сначала устанавливаются в конструкторе, а затем предпочтения читаются, как показано в коде ниже:

Конструктор:

boldAction->setCheckable(true);
italicAction->setCheckable(true);
underlineAction->setCheckable(true);
fontSizeSelector->setCheckable(false);

connect(boldAction,SIGNAL(changed()),this,SLOT(bold()));
connect(italicAction,SIGNAL(triggered()),this,SLOT(italic()));
connect(underlineAction,SIGNAL(triggered()),this,SLOT(underline()));

ReadUserPreferences ():

void TextEditor::readUserPreferences()
    {
        QSettings userPreferences(QSettings::NativeFormat,QSettings::UserScope,ORGANIZATION_TITLE,APPLICATION_TITLE);

        this->boldAction->setChecked( userPreferences.value("appearance/bold").toBool() );
        this->italicAction->setChecked( userPreferences.value("appearance/italic").toBool() );
        this->underlineAction->setChecked( userPreferences.value("appearance/underline").toBool());

       //other code.
}

Теперь в функции readPreferences, когда boldAction->setChecked(true);, не должен ли текст стать жирным, потому что механизм сигнала и слота уже определен?Если так, то почему это не работает на моем приложении?Функция bold сама по себе отлично работает.

Есть ли лучший способ сделать это, чем то, что я делаю?Спасибо за вашу помощь

1 Ответ

2 голосов
/ 31 января 2012

Кажется, здесь две вещи неправильные.

Во-первых, вы подключаетесь к неправильным сигналам.Сигнал изменилось не передает значение, указывающее состояние проверено действия, и срабатывает вообще не излучается при вызове setChecked.Необходимо подключиться к переключенному сигналу .

Во-вторых, сигнал будет излучаться только в том случае, если состояние проверено изменилось.Так что, если действие уже проверено, и предпочтение пользователя оценивается как true, ничего не произойдет.Вероятно, вам нужно предпринять шаги, чтобы убедиться, что перед подключением сигналов установлено соответствующее состояние по умолчанию.

...