我似乎有一个问题。目标:我想动态地将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
小部件到现有的QMainWindow
的centralWidget
,并让它们出现在窗口中,也删除。
我想添加多个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);