Создание, обработка и переключение между окнами QTCreator
Мое исследование этого вопроса показывает, что я несколько бью мертвую лошадь, однако я не могу получить окончательный ответ.
Я использую QT Creator для создания графического интерфейса, который поможет взаимодействовать с регистром единиц (простые объекты, с некоторыми идентификаторами и тому подобное).
У меня есть главное меню, которое содержит 5 кнопок и таблицу. Изображенный здесь. Мой проект в настоящее время включает эти файлы, и мой основной в настоящее время выглядит так:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
UnitRegister e;
CommInterface c;
w.setRegistryPtr(e);
w.setCommPtr(c);
w.setTablePtr(w.findChild<QTableWidget*>("unitTable"));
w.show();
return a.exec();
}
Что я хочу сделать, так это нажать одну из четырех кнопок слева и использовать ее для переключения на другой вид в главном окне.
Для этой цели я рассмотрел использование QStackedWidget, а затем наличие страницы для каждой кнопки меню. У меня вопрос такой:
- Как мне / я должен создать отдельный класс формы элемента QT (заголовок, файл.cpp и.ui) для каждой страницы
- Как переключаться между страницами, которые я добавил, используя QT Designer.
- Как я могу гарантировать, что разные страницы могут получить доступ к UnitRegister, созданному в моем главном файле.
Я не обязательно ищу полный ответ, но кое-что, чтобы заставить меня идти.
1 ответ
Переключение страниц: рассмотрим QButtonGroup
чтобы дать вашим идентификаторам кнопок, которые вы можете сопоставить с индексами вашего QStackedWidget
, Тогда вы можете сделать это:
connect(buttonGroup, SIGNAL(buttonClicked(int)), stackedWidget, SLOT(setCurrentIndex(int)));
Организация страниц: создайте файл.ui и соответствующий контейнерный виджет для каждой страницы в вашем стеке виджетов. Это намного проще, чем один массивный файл.ui.
Доступ к UnitRegister
Есть множество способов сделать это. Добавление функции сеттера в ваши классы - это один из способов.