Эти соединения также указаны в окне редакто­ра сигналов и слотов Qt Designer.


Рис. 2.13. Имена виджетов формы

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


Рис. 2.14. Соединение виджетов формы

Сначала устанавливается соединение между moreButton и secondaryGroupBox. Со­едините эти два виджета красной стрелкой, затем выберите toggled(bool) в качестве сигнала и setVisible(bool) в качестве слота. По умолчанию Qt Designer не имеет в списке слотов setVisible(bool), но он появится, если вы включите режим «Show all signals and slots» (Показывать все сигналы и слоты).


Рис. 2.15. Редактор соединений в Qt Designer

Второе соединение устанавливается между сигналом toggled (bool) виджета moreButton и слотом setVisible(bool) виджета tertiaryGroupBox. После установки со­единения выберите функцию меню Edit|Edit Widgets для выхода из режима установ­ки соединений.

Сохраните диалог под именем sortdialog. ui в каталоге sort. Для добавления программного кода в форму мы будем использовать тот же подход на основе множе­ственного наследования, который нами применялся в предыдущем разделе для диа­лога «Go-to-Cell».

Сначала создаем файл sortdialog. h со следующим содержимым:

#ifndef S0RTDIAL0G_H #define S0RTDIAL0G_H

#include <QDialog>

#include "ui_sortdialog.h"

class SortDialog : public QDialog, public Ui::SortDialog {

Q_0BJECT public:

SortDialog(QWidget *parent = 0);

void setColumnRange(QChar first, QChar last);

};

#endif

Затем создаем sortdialog. cpp:

1 #include <QtGui>

2 #include "sortdialog.h"

3 SortDialog::SortDialog(QWidget *parent)

4 : QDialog(parent)

5 {

6 setupUi(this);

7 secondaryGroupBox->hide();

8 tertiaryGroupBox->hide();

9 layout()->setSizeConstraint(QLayout::SetFixedSize);

10 setColumnRange('A', 'Z');

11 }

12 void SortDialog::setColumnRange(QChar first, QChar last)

13 {

14 primaryColumnCombo->clear();

15 secondaryColumnCombo->clear();

16 tertiaryColumnCombo->clear();

17 secondaryColumnCombo->addItem(tr("None"));


<< назад вперед >>