将QTextEdit对象添加到QMainWindow

时间:2011-09-04 14:58:53

标签: c++ qt qtextedit qmainwindow

我似乎遇到了问题。目标:我想动态地将QTextEdit添加到QMainWindow,我希望在各种QTextEdit对象之间分配大量数据。我一直在关注centralWidget并对Qt Creator生成的ui->setupUi(this);进行了一些挖掘,并发现感兴趣对象的父级是QMainWindow的中心小部件。因此我尝试过这样的事情:

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

其中“this”是QMainWindow。我只想将这些QTextEdit添加到QMainWindow,然后将其删除。我也试过new QTextEdit(this)希望它出现在QMainWindow上,对象几何定义的属性没有运气。

如果我setCentralWidgetQTextEdit而不是它的工作但我不希望该对象使用整个QMainWindow并限制对现有小部件的访问。

所以我基本上需要建议如何将QTextEdit小部件添加到centralWidget的现有QMainWindow并让它们出现在窗口中并删除。< / p>

2 个答案:

答案 0 :(得分:1)

仅仅创建窗口小部件对象是不够的;您还需要将它们添加到布局对象。尝试类似:

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

答案 1 :(得分:1)

  

我想添加多个QTextEdit,这样我就可以使用驻留的QListWidget   (index属性)在许多QTextEdit小部件之间切换

您可以使用QStackedWidget代替QTextEdit,并将所有QTextEdit添加到其中。
只有一个短信总是可见,但您可以通过将currentRowChanged(int)的信号QListWidget连接到插槽setCurrentIndex(int)来自动切换它们,以便QTextEdit的索引与列表中所选项目的索引保持一致。

QStackedWidget也会替换你的容器m_vecTextEdits。