Пример "Multiple Inheritance"Файлы:
Пример "Multiple Inheritance" показывает, как использовать форму, созданную с помощью Qt Designer, в приложении путем наследования от класса QWidget и от класса пользовательского интерфейса, которым является Ui::CalculatorForm. Для создания подкласса файла calculatorform.ui и гарантирования обработки его в qmake с помощью uic, подключаем calculatorform.ui в файле .pro как показано ниже: SOURCES = calculatorform.cpp main.cpp HEADERS = calculatorform.h FORMS = calculatorform.ui После компиляции проекта uic сгенерирует соответствующий ui_calculatorform.h. Определение CalculatorFormВ определение CalculatorForm мы включаем ui_calculatorform.h, сгенерированный ранее. #include "ui_calculatorform.h"
Как рассматривалось выше, класс является подклассом и QWidget, и Ui::CalculatorForm. class CalculatorForm : public QWidget, private Ui::CalculatorForm { Q_OBJECT public: CalculatorForm(QWidget *parent = 0); private slots: void on_inputSpinBox1_valueChanged(int value); void on_inputSpinBox2_valueChanged(int value); }; Определены два слота для автоматического соединения в соответствии с соглашением об именовании ,uic. Это нужно для обеспечения того, чтобы средства QMetaObject'а по автосоединению соединяли все сигналы и слоты, связанные автоматически. Реализация CalculatorFormВ конструкторе вызываем setupUi() для загрузки файла пользовательского интерфейса. Обратите внимание на то, что не нужен префикс ui так как CalculatorForm является подклассом класса пользовательского интерфейса. CalculatorForm::CalculatorForm(QWidget *parent) : QWidget(parent) { setupUi(this); } Подключаем два слота, on_inputSpinBox1_valueChanged() и on_inputSpinBox2_valueChanged(). Эти слоты реагируют на сигнал valueChanged(), который отправляют оба счётчика. Всякий раз, когда изменилось значение одного из счетчиков, мы принимаем это значение и прибавляем его к значению другого счётчика, каким бы оно ни было. void CalculatorForm::on_inputSpinBox1_valueChanged(int value) { outputWidget->setText(QString::number(value + inputSpinBox2->value())); } void CalculatorForm::on_inputSpinBox2_valueChanged(int value) { outputWidget->setText(QString::number(value + inputSpinBox1->value())); } Функция main()Функция main() создаёт экземпляры классов QApplication и CalculatorForm. Объект calculator выводится на экран после вызова функции show(). int main(int argc, char *argv[]) { QApplication app(argc, argv); CalculatorForm calculator; calculator.show(); return app.exec(); } Для включения форм в приложения существует несколько подходов. Подход множественного наследования - только один из них. Для получения дополнительной информации по другим доступным подходам смотрите Использование UI-файла в вашем приложении. |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |