как добавить виджет в форму в QtDesigner - PullRequest
2 голосов
/ 18 ноября 2009

в qdesigner_workbench.cpp, как я могу добавить виджет (скажем, QLabel) в FormWindow по коду? Поскольку все методы, такие как createWidget () ... и т. Д., Являются абстрактными, как правильно использовать внутреннюю механику для добавления QLabel в активное FormWindow?

EDIT:

В qdesigner_workbench.cpp это то, что у меня сейчас есть:

QDesignerFormWindowManagerInterface* fwm = core()->formWindowManager();
QDesignerFormWindowInterface* fw = fwm->activeFormWindow();

QWidget* mw = fw->mainContainer(); 

QLabel* label = new QLabel(mw);         //can be added correctly but not in the right hierarchy
label->setText("I am a good girl.");

mw (полученная из fw-> mainContainer ()) на самом деле является MainWindow, однако реальные данные, которые мне нужны, находятся в:

mw -> children[2] (which is a QDesignerWidget) -> children

В конструкторе 9 виджетов, и вы можете видеть, что у детей упоминалось 9 массивов, упомянутых выше; см. эту ссылку (изображение) для иллюстрации.

http://img24.imagevenue.com/img.php?image=98871_a_122_476lo.jpg

Итак ... как я могу правильно добавить виджет QLabel? Пробовал оба

QLabel* label = new QLabel(fw);   // will be a sibling of MainContainer, which is the QMainWindow (mw) in this case
QLabel* label = new QLabel(mw);   // will be a sibling of QDesignerWidget

и, по-видимому, любая из работ.

Ответы [ 3 ]

4 голосов
/ 18 ноября 2009

Если вы хотите просто отобразить виджет на форме, вы можете установить QMainWindow или QDialog в качестве родителя виджета:

QLabel *l = new QLabel(this);
l->setText("My long string");

Где это - указатель, указывающий на ваш текущий QDialog или QMainWindow.

В противном случае, как указал ufukgun, вы можете использовать setCentralWidget, если вам нужен ваш виджет, чтобы он занимал центр QMainWindow.

1 голос
/ 18 ноября 2009

Вы должны добавить любой QWidget к QLayout формы. Это будет включать его в стратегию отображения формы при ее изменении.

form->ui->layout->add(yourQWidget);

В зависимости от используемого QLayout параметры функции добавления не будут одинаковыми.

0 голосов
/ 18 ноября 2009

создайте виджет и добавьте его в главное окно, так как это ваш центральный виджет

mainWindow->setCentralWidget(centralWidget);

если вы хотите добавить ярлык, вы можете добавить его в этот центральный виджет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...