Добавить объекты QTextEdit в QMainWindow - PullRequest
1 голос
/ 04 сентября 2011

Кажется, у меня проблема.Цель: я хочу динамически добавить QTextEdit к QMainWindow, у меня есть много данных, которые я хочу разделить между различными QTextEdit объектами.Я посмотрел на centralWidget и немного покопался в ui->setupUi(this);, сгенерированном Qt Creator, и обнаружил, что родительский объект для интересующих объектов был центральным виджетом QMainWindow.Таким образом я пробовал что-то вроде этого:

this->m_vecTextEdits.push_back( new QTextEdit(this->centralWidget()) );

, где 'this' - это QMainWindow.Я просто хочу добавить эти QTextEdit к QMainWindow и позже удалить их.Я также попытался new QTextEdit(this), надеясь, что он появится на QMainWindow со свойствами, определенными геометрией объектов, но не повезло.

Если я setCentralWidget соответствую QTextEdit, то он работает, но я не хочу, чтобы объект занимал весь QMainWindow и ограничивал доступ к существующим виджетам.

Поэтому мне нужен совет относительно того, как я могу добавить QTextEdit виджеты к существующим centralWidget из QMainWindow, чтобы они появлялись в окне и также удалялись.

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

Я хотел добавить несколько QTextEdit, чтобы я мог использовать постоянный QListWidget (свойство index) для переключения между многими виджетами QTextEdit

Вы можете поместить QStackedWidget вместоваш QTextEdit и добавьте к нему все QTextEdit.
Только один из текстовых сообщений будет виден все время, но вы можете переключаться между ними автоматически, подключив сигнал currentRowChanged(int) вашего QListWidget к слоту setCurrentIndex(int), чтобы индекс QTextEdit оставалсясовпадает с индексом выбранного элемента в вашем списке.

QStackedWidget также заменит ваш контейнер m_vecTextEdits.

1 голос
/ 04 сентября 2011

Недостаточно просто создать объекты виджета;Вам также необходимо добавить их в объект макета.Попробуйте что-то вроде:

QBoxLayout * bl = new QBoxLayout(centralWidget());
QTextEdit * t = new QTextEdit;
bl->addWidget(t);
...