問題タブ [qwidget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
935 参照

c++ - Qt の後の関数呼び出しで関数内で作成されたウィジェットにアクセスする方法

そのため、現在、QComboBox から選択が行われたときに、いくつかの QLabels、QLineEdit、および QCheckBox を作成するコードを C++ で作成しています。ただし、コンボ ボックスから新しい選択が行われた場合に、後の関数で作成したウィジェットにアクセスしてそれらを破棄できるようにしたいと考えています。ui-> Objectを実行することで Designer を使用して作成されたオブジェクトにアクセスできますが、独自のコードを使用して作成されたオブジェクトではアクセスできません。私はそれを扱う方法を知っているので、どうにかしてそれを行うことができますか。

つまり、ユーザーの選択に基づいて QWidgets を動的に作成/破棄できるようにしたいと考えています。これを行うために知っておくべきリファレンスやドキュメントはありますか? それとも、私はこれについて完全に間違った方法で進んでいますか? オブジェクトを作成するために現在持っているコードは次のとおりです。

0 投票する
1 に答える
1557 参照

qt - 子要素が削除されたときに Qt ウィンドウのサイズを変更します。

QWidget含むウィンドウがありますQSplitter。スプリッターの左右両方に (コンテナー内に) がありますQStackedLayoutQWidgetメイン アプリケーションは左側の領域にありQWebViews、右側に表示されるようにトリガーできます。右を削除するQWebViewと、ウィンドウはサイズ変更を試みますが、の幅のままQWebViewです。ウィンドウをドラッグしようとすると、スプリッターの左側の位置にスナップします。

最後のウィジェットを右側から削除すると、スプリッターの左側のみが表示されるようにウィンドウがスナップバックされますQStackedWidget。いろいろな呪文を試してみましたが、Qt はよくわからないので、勉強しながら学んでいます。

以下のコードは Java で、Jambi ラッパーを使用しています。概念は C++ でも同じである必要があり、必要に応じて他の言語バインディングを Jambi に翻訳できます。

にウィジェットを追加および削除するときにウィンドウの最小幅を設定しようとしましたRightStackedLayoutが、場合によってはスプリッター ハンドルが壊れます。これはハックの回避策だと思います。スプリッターの右側に変更を加えてトップレベルウィンドウを更新するという正しい方向に誰かが私を向けることができれば、私は非常に感謝しています。

0 投票する
1 に答える
1399 参照

qt - プラグイン(.so)からのQt UI(画像付き)の読み込みの問題

リソースファイル(resources.qrc)からロードされた画像(QLabelの背景として)を表示するカスタムウィジェットをロードして表示するプラグインがあります。私が直面している問題は、プラグインが読み込まれると、ウィジェットは正しく表示されますが、画像は表示されないことです。「Q_INIT_RESOURCE(resources)」をどこにでも配置しようとしましたが、何も起こりません。qrcファイルを使用して画像を表示するカスタムウィジェットを多数作成しましたが、アプリ内で直接作成しただけで、問題なく機能しました。今回はプラグインからのものなので、ここに欠けているものがあるはずです。何か助けはありますか?

0 投票する
1 に答える
1531 参照

python - ScrollArea のカスタム ウィジェットが押しつぶされています。

qscrollarea があり、その中に qgridlayout があります。グリッド レイアウトで、多数のカスタム ウィジェットを作成し (簡単にするために、これらのウィジェットはグループ ボックスとラベルにすぎません)、各行に 1 つ追加します。

垂直スクロールバーを表示する代わりに、カスタム ウィジェットはすべてスクロール領域のサイズに合わせて圧縮されます。

次の方法でカスタム ウィジェットをスクロール領域に追加します。

カスタム ウィジェットは QWidget を拡張し、sizeHint を再実装します。

sizeHint メソッドが呼び出されていますが、ウィジェットはまだ非常に小さい高さに押しつぶされています。カスタム ウィジェットのすべての要素の幅と高さは固定されており、高さと幅の最小値と最大値は 660、300 に設定されています。

誰でも試す提案はありますか?ありがとうございました!

追加情報: スクロール領域は MainWindow にあり、widgetResizable ブール値は False に設定されています。

明日は、カスタム ウィジェットを削除して、scrollArea を通常のウィジェットで動作させることができるかどうかを確認します。

0 投票する
2 に答える
8079 参照

qt4 - QWidget を強制的に別のウィンドウに表示するには?

私は持っている

とメインウィンドウMainWindow w;

私が欲しい

  1. から MyWidget の新しいインスタンスを作成しますw
  2. そのインスタンスは後QCloseEventまたは一緒に破棄されますw(現在、それらは後にのみ破棄されQCloseEventます)。
  3. そのインスタンスが新しいウィンドウに表示されます。

私はMyWidgetこのような新しいインスタンスを作成しています:

として作成しようとするwidgと、 の内側(左上隅)に表示されます。wparentwidgw

それを修正する最も簡単で明確な方法は何ですか?

ありがとう!

0 投票する
1 に答える
601 参照

qt - ui は、コンストラクターの外部にアクセスすると SIGSEGV を引き起こします

コンストラクターの外部から ui にアクセスしようとすると、SIGSEGV シグナルを受け取ります。エラーは、prepareQuestions 関数の下部にある cpp ファイルの一番下の行で発生します

私はそれを可能な限り最小のコードに減らしてみました:

ヘッダ:

cpp ファイル:

メインで構築する場所

ここで、QuestionDialog を一番上に呼び出します。

エラー行がコメントされている場合の gui (lbl_question1 の変更が機能しないことに注意してください) http://i77.photobucket.com/albums/j74/bertyhell/gui.png

デバッガーを使用したエラー:

http://i77.photobucket.com/albums/j74/bertyhell/seg_fault.png

0 投票する
1 に答える
4893 参照

qt - QStyledItemDelegate-updateEditorGeometryはどのように機能しますか?

Qt4.7を使用しています。

2列で表示するモデルがありQTableViewます。私の目標は、でこのモデルのインライン編集を提供することQTableViewです。

最初の列はQComboxBox、右と左を簡単に切り替えることで編集可能であり、非常にうまく機能します。問題は、カスタムウィジェットを使用して編集可能な2番目の列にあります。

このウィジェットは一種の単純なもので、範囲を記述します。したがって、範囲の種類を選択するためのQComboBoxがあります(「固定」:値はユーザーによって指定され、「ソース」:値はソースの最小/最大から動的に調整されます)。

カスタムウィジェットのソースコードは次のとおりです。

さて、これで、QStyledItemDelegateを作成して、ビューに列のカスタムエディターを提供しました。これが私がそれをした方法です:

基本的に、私が得るのは単一ピクセルの高さエディターです。

結果のスクリーンショットは次のとおりです。スクリーンショット1

私は次のように変更しようとしましupdateEditorGeometryた:

これはサイズの問題を修正するようですが、位置は修正しません: ここに画像の説明を入力してください

問題がカスタムウィジェット(Qtがその位置を適切に計算するための十分な情報を提供していない)、ビュー(エディターのサイズを押しつぶす可能性のあるマージン)、またはupdateEditorGeometry()方法。

読んでくれてありがとう!

0 投票する
2 に答える
2295 参照

events - QWidget focusOutEvent が受信されない

QLineEdit と QCalendar をサブクラス化して日付入力を作成しました。mousePressEvent が QLineEdit で受信されると、カレンダーが QLineEdit の下部に表示されます。問題は、そのカレンダーを非表示にすることです。ユーザーが別の場所をクリックしたときにフォーカスを閉じたいので、その focusOutEvent をオーバーライドしました。しかし、このイベントはまったく受信されません。ブレークポイントを入れることでこれを確認しました。そこで止まることはありません。私はそれに呼び出しを入れましclose()た:

DateLineEdit から閉じると、期待どおりに動作します。

0 投票する
5 に答える
20795 参照

c++ - Qt - QWidget: GUI が使用されていない場合、QWidget を作成できません

単純なプログラムを実行しようとしていますが、実行するQtと、コンソール ウィンドウに :QWidget: Cannot create a QWidget when no GUI is being usedと 2 行目が表示さThis application has requested the Runtime to terminate.....れ、.exeファイルが機能しなくなります。

私の.proファイルは次のようになります。

それに関するアイデアはありますか?

ありがとう。

0 投票する
4 に答える
3482 参照

c++ - Qt - QWidget とは正確には何ですか

この本では、アプリケーションのメイン ウィンドウC++ GUI Programming with Qt 4として機能する最初の章の例で言及されています。QWidget

また、 http Qt Reference Documentation: //doc.qt.io/qt-4.8/qwidget.htmlには、QWidget に関する多くの情報があります。

しかし、ベースラインとは何ですか?QWidget は主に何をしますか? いつ考えればいいの?