2012-03-20 6 views
1

これはQt/C++でのプログラミングの質問です。私は2つの項目を持つコンボボックスを持っています。現在の選択インデックスが0の場合、コンボボックスの下のレイアウトにはQLineEditは表示されません。 1の場合、QLineEditが表示されます。再度インデックスが0になると再び消えます。 特に、レイアウト内の他の要素は、変更の影響を受けてはいけません。他のQineEditで既にユーザーが入力した値はそのまま残ります。Qt - パネルにQLineEditを動的に追加する

ウィジェットを動的に変更できますか?あなたはどうしたのですか?

大切にしてください。

+0

あなたは何を混乱させるように試みましたか?この仕事はどういうわけか複雑ではないようです。 – Lol4t0

答えて

4

すべてのQWidgetオブジェクトには、hide()という関数があります。

コンボボックスのcurrentIndexChanged信号に信号をアタッチすることができます。この関数では、あなたが覚えているロジックを実装し、QLineEditのメソッドhideを呼び出すことができます。

このアプローチの唯一の問題は、非表示にしたときにQtウィジェットがスクリーン上にスペースを占有せず、レイアウト変更につながる可能性があることです(レイアウトをプログラミングした方法、たとえば、少し動くことができます)。 QLineEditのどこに他のウィジェットを表示させるか(おそらく、show()関数を呼び出し、LineEditと同じコンテナに 'プレースホルダ'を置くこと)、そのスペースを占有してそこに保持するか、 QStackedWidgetを使用して2つのウィジェットを追加し、そのインデックスを変更できます。

次の例を読むことをお勧めします。これは、動的に変化するものについてのいくつかの有用な洞察を持っています:Qt Extension Example

また、疑問があるときは、他の例を見てください。本当によく書かれており、Qtに関する多くの重要なトピックをカバーしています。

あなたのコードで幸運を祈ってください:)

+0

回答と半分、私はちょうどQt Docsにリンクするつもりでした。 –

+0

Tks Castilho。しかし、hide()やsetVisible(true/false)のどちらでも動作しません。私は見つけるために慎重な例を読むでしょう。明らかにhide()だけではフィットしません。私がウィジェットを必要に応じて再表示する必要があるからです。 – octoback

関連する問題