問題タブ [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.
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に行を追加したいと思いました。 。しかし、私はすでに自分の道を見つけました、私は今これを必要としません。
助けが必要だった
qt - Qt: シグナルをキャプチャして渡すための最良のメカニズム
クラスを拡張するQWidget
クラスがあり、このクラスは QtDesigner によって生成された Ui クラスを使用します。次のようなもの:
QPushButton * pushButton
内にフィールドがあるとしましょうUi::MyUi
。このウィジェットの UI には、複雑なビジネス ロジックはありません。
ここで、 がクリックされるたびpushButton
に、このウィジェットがシグナルを発する必要があります (これを と呼びましょうpushButtonClicked()
。これが達成されると想像できる唯一の方法は次のとおりです。
clicked()
オブジェクトのシグナルをpushButton
ローカルスロットに接続しpushButtonClicked()
、そこからシグナルを発信します。MyWidget
のmouseEventFilterとしてインストールしpushButton
、内部で処理しますMyWidget::mouseClickedEvent
他のオプションはありますか?Qt フレームワークに 'MyWidget::pushButtonClicked()' を代わりに使用させるようにpushButton->clicked()
MyWidget
プロジェクトでは、集約または継承によって UI をラップ/抽象化する のようなラッパー クラスからこのような信号の受け渡しが必要な、このような多くのシナリオがあります。一般に、より良い設計、特にコードの再利用のための最良のアプローチと考えられているものはどれですか。プロジェクトが初期段階にあり、これらの UI のどれが将来複雑なビジネス ロジックを必要とするかがわからない場合。
QPushButton の拡張はオプションではないことに注意してください。
qt - QListView の QWidgetDelegate の paint() メソッドで QWidget をレンダリングする
でカスタム ウィジェットのレンダリングを実装するのに問題がありQListView
ます。現在、に基づいてQListView
呼び出されたカスタム モデルを表示しています。PlayQueue
QAbstractListModel
これは単純なテキストでは問題なく機能しますが、各要素のカスタム ウィジェットを表示したいと考えています。したがって、次のようにメソッドQStyledItemDelegate
を実装するためにa をサブクラス化しました。paint
選択した背景は適切にレンダリングされますが、ウィジェットは表示されません。Qtの例のような簡単なQPainter
コマンドで試してみましたが、これはうまくいきます:
だから私は次のようないくつかの変更を試みました:
QStyledItemDelegate
に変更QItemDelegate
- レンダリングの追加
painter->save()
と周辺painter->restore()
- ウィジェット ジオメトリを使用可能なサイズに設定する
しかし、私は少し立ち往生しています。インターネットでしばらく検索しましたが、私が望むことを実行する例が見つかりません。それらはすべて、ウィジェットの編集 (はるかに簡単です) またはカスタム描画コントロール (事前定義されたもの) について話します、進行状況バーなど)。しかし、ここでは、いくつかのレイアウト、ラベル、およびピックスマップを含む、作成したカスタム ウィジェットが本当に必要です。ご協力いただきありがとうございます!
Ubuntu 11.04 で GCC に Qt 4.7.3 を使用しています。
qt - QCustomContextMenu が開いているときにイベントを受け取る
キー イベントとマウス イベントのキャプチャに問題があります。QGLWidget を継承するクラスがあります。ウィジェットのコンテキスト メニュー ポリシーを設定して、コンテキスト メニュー QCustomContextMenu を呼び出します。コンテキスト メニューが開いているため、マウス イベントとキー イベントをキャプチャできません。コンテキスト メニューが開いている場合でも、イベントをキャプチャする必要があります。
ありがとう!
c++ - main()の外でQtにウィンドウを作成しますか?
チュートリアルで行われているように、Qt で main() 関数の外にウィンドウを作成することは可能ですか? 私がここでやった彼らのやり方の何が問題なのですか?コンパイルしようとするとエラーは発生しませんが、ウィンドウが表示されません。ありがとう。
main.cpp
電卓.h
電卓.cpp
qt - QTがツールバーとそのボタンをハングさせる
それぞれ2つのクラスを作成しました。
QWidget
親として持っているQ_OBJECT
マクロがあります- いくつかのアクションを開始し、メニューバーとツールバーを作成し、アクションをそれらに接続します
次に、メインプログラムファイルを作成しQMainWindow
、を作成して、2つのクラスをqmainwnd
ポインタで初期化しました。
そして、私が持っているもの-メニューは機能し、2番目のツールバーは機能しますが、最初のツールバー(クラス1によって作成された)はマウスクリックに応答しません。
何が起こったのですか?この最初のツールバーを移動したり、そのボタンをクリックしたりすることさえできないのはなぜですか?
ここにサンプルがあります:
qt - QWidgetsは移動したときに信号を発しますか?
QWidgetがいつ移動されるか(そのxまたはyプロパティがいつ変更されるか)を知る必要があります。そのためのシグナルはありますか?
c++ - QWidgetを複製します
実行時にウィンドウが変更されるため、ウィンドウを複製できるように、Qwidgetをコピーできる必要があります。これは可能ですか?
qt - コンパイル時のQVisionウィジェットエラー
これを研究に使用できるようになるまで、あと 1 つのエラーのみです。
それに付随する行番号はありません。見つけようとしましたが、開いた部分が見当たりませんでした。
このライブラリを正しくコンパイルするにはどうすればよいですか?
qt - QtはgetDCを使用してQWidgetのハンドルを公開します-MacでQWidgetのハンドルを取得するにはどうすればよいですか?
QWidget :: getDCを使用してQWidgetでネイティブwin32呼び出し(GetPixel / SetPixel)を行うことができます..Macビルドでこれを行うにはどうすればよいですか?
ピクセル情報を取得するためにQImage/QPixmapを使用することはオプションではありません。これは、WindowsとMacの両方でQPainterを介してQWidgetに既に描画されているものに非常に高速にアクセスする必要があるためです。
WindowsでGetPixelを使用している理由は、2Dマウスピッキングを実装するためです。