Пример "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();
}
Для включения форм в приложения существует несколько подходов. Подход множественного наследования - только один из них. See Using a Designer .ui File in Your Application for more information on the other approaches available.
| Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) |
Торговые марки |
Qt 4.5.3 |
|