将QTextEdit对象添加到QMainWindow中

Add QTextEdit objects to a QMainWindow

本文关键字:QMainWindow 添加 QTextEdit 对象      更新时间:2023-10-16

我似乎有一个问题。目标:我想动态地将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上,由物体几何定义的属性没有运气。

如果我将setCentralWidget设置为QTextEdit,那么它可以工作,但我不希望对象消耗整个QMainWindow并限制对现有部件的访问。

所以我需要的建议基本上是如何我可以添加QTextEdit小部件到现有的QMainWindowcentralWidget,并让它们出现在窗口中,也删除。

我想添加多个QTextEdit,所以我可以使用一个驻留的QListWidget(索引属性)在众多QTextEdit小部件之间切换

您可以用QStackedWidget代替QTextEdit,并将所有QTextEdit添加到其中。
只有一个文本在任何时候都是可见的,但是你可以通过将QListWidget的信号currentRowChanged(int)连接到插槽setCurrentIndex(int)来自动在它们之间切换,以便QTextEdit的索引与列表中选定项目的索引保持一致。

QStackedWidget将取代您的容器m_vecTextEdits。

仅仅创建小部件对象是不够的;您还需要将它们添加到布局对象中。试试这样写:

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