問題タブ [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 投票する
1 に答える
1523 参照

c++ - Qtの別のファイルの関数からウィジェットにどのようにアクセスしますか?

私はプロジェクトを開発していて、最初はGUIなしでプロジェクトを作成し始めましたが、現在はQtに移植していますが、問題があります。

別のファイルに「古い」実装があり、QTextBrowserに出力するために、そこからMainWindowウィジェットにアクセスしようとしましたが、アクセスできません。

mainwindow.cppに私はこれを持っています:

mainwindow.h:

そしてsimple_mode.cppで:

ただし、これは必要なテキストブラウザに「WORKS」を追加しません。メインウィンドウと同じではないテキストブラウザの別のインスタンスに追加すると思います。

編集:私がやりたかったのは、simple_mode.cppからtextbrowserに直接テキスト行を追加することでした。ちなみに、simple_modeはQtの助けを借りずに書かれたので、std文字列を使用しました。現在、textbrowserウィジェットは仮想端末の出力画面として機能し、以前のようにprintfを使用する代わりに、textbrowserに行を追加したいと思いました。 。しかし、私はすでに自分の道を見つけました、私は今これを必要としません。

助けが必要だった

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

qt - Qt: シグナルをキャプチャして渡すための最良のメカニズム

クラスを拡張するQWidgetクラスがあり、このクラスは QtDesigner によって生成された Ui クラスを使用します。次のようなもの:

QPushButton * pushButton内にフィールドがあるとしましょうUi::MyUi。このウィジェットの UI には、複雑なビジネス ロジックはありません。

ここで、 がクリックされるたびpushButtonに、このウィジェットがシグナルを発する必要があります (これを と呼びましょうpushButtonClicked()。これが達成されると想像できる唯一の方法は次のとおりです。

  1. clicked()オブジェクトのシグナルをpushButtonローカルスロットに接続しpushButtonClicked()、そこからシグナルを発信します。

  2. MyWidgetのmouseEventFilterとしてインストールしpushButton、内部で処理しますMyWidget::mouseClickedEvent

他のオプションはありますか?Qt フレームワークに 'MyWidget::pushButtonClicked()' を代わりに使用させるようにpushButton->clicked()

MyWidgetプロジェクトでは、集約または継承によって UI をラップ/抽象化する のようなラッパー クラスからこのような信号の受け渡しが必要な、このような多くのシナリオがあります。一般に、より良い設計、特にコードの再利用のための最良のアプローチと考えられているものはどれですか。プロジェクトが初期段階にあり、これらの UI のどれが将来複雑なビジネス ロジックを必要とするかがわからない場合。

QPushButton の拡張はオプションではないことに注意してください。

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

qt - QListView の QWidgetDelegate の paint() メソッドで QWidget をレンダリングする

でカスタム ウィジェットのレンダリングを実装するのに問題がありQListViewます。現在、に基づいてQListView呼び出されたカスタム モデルを表示しています。PlayQueueQAbstractListModel

これは単純なテキストでは問題なく機能しますが、各要素のカスタム ウィジェットを表示したいと考えています。したがって、次のようにメソッドQStyledItemDelegateを実装するためにa をサブクラス化しました。paint

選択した背景は適切にレンダリングされますが、ウィジェットは表示されません。Qtの例のような簡単なQPainterコマンドで試してみましたが、これはうまくいきます:

だから私は次のようないくつかの変更を試みました:

  • QStyledItemDelegateに変更QItemDelegate
  • レンダリングの追加painter->save()と周辺painter->restore()
  • ウィジェット ジオメトリを使用可能なサイズに設定する

しかし、私は少し立ち往生しています。インターネットでしばらく検索しましたが、私が望むことを実行する例が見つかりません。それらはすべて、ウィジェットの編集 (はるかに簡単です) またはカスタム描画コントロール (事前定義されたもの) について話します、進行状況バーなど)。しかし、ここでは、いくつかのレイアウト、ラベル、およびピックスマップを含む、作成したカスタム ウィジェットが本当に必要です。ご協力いただきありがとうございます!

Ubuntu 11.04 で GCC に Qt 4.7.3 を使用しています。

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

qt - QCustomContextMenu が開いているときにイベントを受け取る

キー イベントとマウス イベントのキャプチャに問題があります。QGLWidget を継承するクラスがあります。ウィジェットのコンテキスト メニュー ポリシーを設定して、コンテキスト メニュー QCustomContextMenu を呼び出します。コンテキスト メニューが開いているため、マウス イベントとキー イベントをキャプチャできません。コンテキスト メニューが開いている場合でも、イベントをキャプチャする必要があります。

ありがとう!

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

c++ - main()の外でQtにウィンドウを作成しますか?

チュートリアルで行われているように、Qt で main() 関数の外にウィンドウを作成することは可能ですか? 私がここでやった彼らのやり方の何が問題なのですか?コンパイルしようとするとエラーは発生しませんが、ウィンドウが表示されません。ありがとう。

main.cpp

電卓.h

電卓.cpp

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

qt - QTがツールバーとそのボタンをハングさせる

それぞれ2つのクラスを作成しました。

  1. QWidget親として持っている
  2. Q_OBJECTマクロがあります
  3. いくつかのアクションを開始し、メニューバーとツールバーを作成し、アクションをそれらに接続します

次に、メインプログラムファイルを作成しQMainWindow、を作成して、2つのクラスをqmainwndポインタで初期化しました。

そして、私が持っているもの-メニューは機能し、2番目のツールバーは機能しますが、最初のツールバー(クラス1によって作成された)はマウスクリックに応答しません。

何が起こったのですか?この最初のツールバーを移動したり、そのボタンをクリックしたりすることさえできないのはなぜですか?

ここにサンプルがあります:

main.cpp

CModDocument.h

CModDocument.cpp

CModEditor.h

CModEditor.cpp

build.pro

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

qt - QWidgetsは移動したときに信号を発しますか?

QWidgetがいつ移動されるか(そのxまたはyプロパティがいつ変更されるか)を知る必要があります。そのためのシグナルはありますか?

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

c++ - QWidgetを複製します

実行時にウィンドウが変更されるため、ウィンドウを複製できるように、Qwidgetをコピーできる必要があります。これは可能ですか?

0 投票する
6 に答える
20840 参照

qt - コンパイル時のQVisionウィジェットエラー

これを研究に使用できるようになるまで、あと 1 つのエラーのみです。

それに付随する行番号はありません。見つけようとしましたが、開いた部分が見当たりませんでした。

このライブラリを正しくコンパイルするにはどうすればよいですか?

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

qt - QtはgetDCを使用してQWidgetのハンドルを公開します-MacでQWidgetのハンドルを取得するにはどうすればよいですか?

QWidget :: getDCを使用してQWidgetでネイティブwin32呼び出し(GetPixel / SetPixel)を行うことができます..Macビルドでこれを行うにはどうすればよいですか?

ピクセル情報を取得するためにQImage/QPixmapを使用することはオプションではありません。これは、WindowsとMacの両方でQPainterを介してQWidgetに既に描画されているものに非常に高速にアクセスする必要があるためです。

WindowsでGetPixelを使用している理由は、2Dマウスピッキングを実装するためです。