qmainwindowにqtexteditオブジェクトを追加します
-
22-10-2019 - |
質問
私は問題を抱えているようです。目的:動的に追加したい QTextEdit
に QMainWindow
, 、私はさまざまなものの中で分割したい多くのデータを持っています QTextEdit
オブジェクト。私は見てきました centralWidget
そして、いくつかを掘り下げました ui->setupUi(this);
QT作成者によって生成され、関心のあるオブジェクトの親が中央ウィジェットであることを発見しました QMainWindow
. 。したがって、私はこのようなことを試しました:
this->m_vecTextEdits.push_back( new QTextEdit(this->centralWidget()) );
どこ 'this
' それは QMainWindow
. 。これらを追加したいだけです QTextEdit
に QMainWindow
後でそれらを削除します。私も試しました new QTextEdit(this)
それがに表示されることを願っています QMainWindow
オブジェクトのジオメトリによって定義されたプロパティは、運がありません。
もし私が setCentralWidget
のそれである QTextEdit
それが機能するよりもですが、私はオブジェクトが全体を消費したくありません QMainWindow
既存のウィジェットへのアクセスを制限します。
だから私は基本的にどのように追加できるかというアドバイスが必要です QTextEdit
既存のウィジェット centralWidget
の QMainWindow
そして、それらを窓に現れて削除します。
解決
複数のqtexteditを追加して、居住するqlistwidget(インデックスプロパティ)を使用して、多くのqtexteditウィジェットに切り替えることができるようにしたかった
あなたはaを置くことができます QStackedWidget
あなたの代わりに QTextEdit
, 、すべてを追加します QTextEdit
それに。
テキストエディットの1つだけが常に表示されますが、信号を接続することで自動的に切り替えることができます currentRowChanged(int)
あなたの QListWidget
スロットに setCurrentIndex(int)
そのため QTextEdit
リスト内の選択したアイテムのインデックスと同じように留まります。
QStackedWidget
コンテナm_vectexteditsにも置き換えます。
他のヒント
ウィジェットオブジェクトを作成するだけでは不十分です。また、レイアウトオブジェクトに追加する必要があります。次のようなものを試してみてください:
QBoxLayout * bl = new QBoxLayout(centralWidget());
QTextEdit * t = new QTextEdit;
bl->addWidget(t);