問題タブ [custom-widgets]

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 に答える
677 参照

qt - Qt カスタム ウィジェット更新の大きなオーバーヘッド

社内の一部の Linux ベースの組み込みデバイスに Qt 4.8.5 を使用しようとしています。XサーバーなしでQt組み込みを使用しています。測定データをプロットして頻繁に更新する必要があります (20 ~ 30 fps、ただしウィジェットのごく一部のみ)。システムは ARM ベースの 400Mhz で、GPU も FPU もありません。QWidget をサブクラス化し、paintEvent() をオーバーライドしました。WA_OpaquePaintEvent と WA_StaticContents が設定されています。テストのために、私のペイント イベントは空で、50 ミリ秒に設定されたタイマーからウィジェットの update() 関数を呼び出します。私の問題は、空の更新プログラムが CPU の 30% を消費していることです。アップデートの範囲によって金額が変動するので、QTがバックグラウンドで何かを再描画することもあると思います。多くの投稿を読みましたが、問題の解決策が見つかりません。更新呼び出しをコメントアウトすると、CPU 使用率は ~1% に低下します (ウィジェットをテストするためにタイマーでサインを生成しても、空の関数呼び出しよりもはるかに複雑になるはずです)。私のウィジェットは長方形で、透明ではなく、ペイント イベントから完全な描画手順を処理したいと考えています。

このオーバーヘッドを削減し、塗装プロセス全体を自分で処理することはできますか?

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

gtk - GtkScrolledWindow コンテナは、その子に負の座標でサイズ割り当てを送信します

カスタム Gtk+ ウィジェットを Gtk2 から Gtk3 に移植しています。後者では、負の Y 座標を持つ親ウィジェット (GtkScrolledWindow) からsize_allocation呼び出しを取得していることを観察しています。allocation

これにより、私のウィジェットがびっくりして、明らかに愚かなことをします。負の座標を含む呼び出しを無視すると、すべて正常に動作するように見えます。

質問は次のとおりです。

  • これはgtkのバグですか?
  • そうでない場合、親はどのような状況で負の座標を送信する必要がありますか?
  • GTK2 ではなく GTK3 で発生するのはなぜですか?

gtk+ 3.6.4 (Ubuntu 13.04 に付属) と 3.8 (Ubuntu 13.10) の両方で発生します。すぐに上位バージョンをテストします。

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

c++ - カスタム QDialog が exec() 時に segfault を引き起こす

QMainWindow基本的にセントラル ポインターとメンバーポインターで構成されるプログラムがありQToolbarます。

このツールバーの 1 つのアクションにはtriggered、スロットに接続された信号があり、カスタム派生ウィジェットShowNodeEditBox()をインスタンス化して実行しようとします。QDialog

何らかの理由で、exec を呼び出すとセグメンテーション違反が発生しますが、ウィンドウを作成せずにウィンドウを構築するだけでは問題なく動作します。スタック トレースは次のとおりです。

0x0 が表示されているので、何かがここにあることは間違いありませんが、それを理解することはできませんでした。それ自体の構造NodeEditBoxは非常に複雑です (たくさんのスライダー、ラベルなどがいたるところにあります)。

驚いたことに (これは非常に複雑なウィジェットなので、おそらくありがたいことに)、これはまったく同じセグメンテーション違反を引き起こします! また、単にインスタンス化するのではなくNodeEditBoxwithへのポインターを作成しようとしました。また、ツールバー クラスの a ポインター メンバーを作成し、それを以前に構築しました (したがって、 でのみ実行しました。また、親と GLWidget シーン ポインターは既に作成されています。私の知る限りでは、堅牢ですが、それでも毎回同じ問題が発生します。newNodeEditBoxexecShowNodeEditBox()

ここで何が欠けていますか?

**その他の情報/編集:QDialogカスタム バージョンの代わりに通常の空のポップアップを使用すると、問題なく動作します。だから、それは親に関係があるのか​​もしれません。

さらに興味深いことに、代わりにNodeEditBoxから派生すると問題なく動作し、クラッシュしません! を使用したかったのですが、ツールバークラスのメンバーでない限り、呼び出しが機能しないように見えます。これは、さまざまな場所にポップアップする複数の「使い捨て」ノード編集ボックスが必要なため、必要ありませんでした。回...QWidgetQDialogQDialogexec. showNodeEditBox

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

c++ - qtdisgner からカスタム qtdesigner プラグインの子ウィジェットにアクセスする

カスタム QtDesigner プラグインを作成しました。QtDesigner でうまくロードされ、.ui ファイルで使用でき、実行可能ファイルで正常に動作します。

私の唯一の懸念は、プラグインを別のウィジェットで使用する場合、プラグインの子ウィジェットの値を変更できないことです。

わかりにくい場合は申し訳ありませんが、状況の概略図を次に示します。

QtDesigner では:

そして、基になる QComboBox と QTextEdit にアクセスできません。さて、私は2つの方法を見つけました。最初のものはうまく機能しますが、かなり面倒です。2番目はほとんど機能します。

最初の解決策 - 動作中

まず、QWidget で子ウィジェットのセッターとゲッターを作成すると、Q_PROPERTY マジックのおかげで、QtDesigner のプロパティ エディターにプロパティが表示されます。

これは問題ありませんが、私が望むものではありません。QTextEdit をクリックして、そこから直接テキストを編集できるようにしたいと考えています。これはデフォルトでは不可能です。

2 番目の解決策 - 機能しない

https://qt-project.org/doc/qt-5.0/qtdesigner/containerextension.html#multipagewidget-class-definitionの例を見て、次の行に出くわしましたmultipagewidget.cpp:

この行をプラグイン ウィジェット (それぞれ"__qt__passive_textEdit"textEdit 用) に追加すると、QtDesigner でコンボボックスをクリックして選択した値を変更できるようになります。しかし、QtDesigner を閉じて再度開くと、アクション (comboBox で選択したアイテムを変更する) は保存されません。

質問

だから私の質問は2つあります.QtDesignerプラグインを含めるときに子ウィジェットのプロパティを設定するにはどうすればよいですか?この"__qt__passive_..."文字列はどのような魔法を行いますか?

編集: multipagewidget の例では、comboBox から変更したときに currentIndex が変更されたという事実を保存することもできません。

したがって、今のところ、@ratchet フリークのコメントで提案されているように、Q_PROPERTY ルートを使用します。

変更が保存されるかどうかを確認する方法を知りたい場合は、QtDesigner のプロパティ エディターでプロパティの名前が太字になります。

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

wordpress - カスタム メニュー選択を使用して WordPress ウィジェットを作成する方法

WordPress 用のカスタム ウィジェットを作成していますが、デフォルトのカスタム メニュー ウィジェットと同じ選択メニューを使用したいと考えています。これまでのところ、選択したメニューがフロントエンドに保存または表示されないことを除いて、私が持っているものは機能します。これに関するヘルプや指示をいただければ幸いです。ありがとう。

簡潔にするために、余分なウィジェット オプションを削除したので、これは基本的にカスタム メニュー ウィジェットに非常に近くなります。

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

layout - JavaFX: Accordion や TreeView などの複合標準コントロールのレイアウトをカスタマイズします

JavaFX の基本概念を調べているときに、次の疑問が生じました。

複合コントロール ( や など) のレイアウトをカスタマイズする方法はありTreeViewますAccordionか?

たとえば、子要素を水平方向に配置したり、アニメーションを導入したりします。

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

android - 最小値と最大値を持つカスタム シークバー - Android

このリンクSeekbarと同様に、0 以外の別の開始位置が必要です。リンクされた質問に示されているのと同じ機能を実行したいのですが、ユーザーが値を 0 ~ 200 の間で変更できるようにしたいと考えています。シーク値を変更する必要があります。検索した後、作成する必要があるという結論に達しましたが、問題を解決する良いチュートリアルが見つかりませんでした。誰かが良いチュートリアルを持っている場合は、リンクを投稿してください。ありがとうございました。SeekbarCustom Seekbar

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

qt - クリックされた listwidgetitem を customwidget プッシュボタンに接続します

QProcess を使用して、利用可能な Bluetooth デバイスをスキャンしています。QProcess は、hcitool scan などのコマンド ライン コマンドを使用して、利用可能なデバイスをチェックします。出力は正規表現を使用して解析され、デバイス名、OPUSH のチャネル、デバイスのタイプ、デバイス アドレスなどの詳細を含むデータ構造のセル (スキャンされたデバイスの数に等しい) があります。

QListWidget を使用するすべてのデバイスを表示するには

カスタム子ウィジェットには、1. デバイスのタイプの画像を示すラベルがあります 2. デバイス名を表示するボタン (フラット) 3. ファイルを送信する OPUSH チャネルが使用可能かどうかを示すラベル

listwidgetitem プッシュボタンをクリックすると、Bluetooth デバイスとペアリングされ、ファイルが送信されます。QListwidgetitem clicked() シグナルを、デバイス名 clicked() スロットを含む childwidget プッシュボタンに接続したいと思います。このようにして、ユーザーはアイテムのどこでも押すことができ、デバイスはペアリングしてファイルを送信します。

どうすればいいですか?

リストウィジェットは親クラスにあり、アイテムは子ウィジェットです。qlistwidgetitem の clicked シグナルをスロット onitemclicked() に接続してみました。onitemclicked() 関数で、プッシュボタンのクリック関数を実装するカスタム childwidget 内の関数を呼び出そうとしましたが、デバイス名、アドレス、チャネルなどの詳細がないため、操作を実行できません。

デバイス名としてテキストを含む子ウィジェットのプッシュボタンをクリックするだけで、すべての詳細が表示され、ペアリングと送信操作が実行されます。

私はいくつかの解決策を考えました.1.グローバル構造を作成し、その中にデータを保存してORを利用します.2.データベースにテーブルを作成し、子ウィジェットのロードを解析しながらデータを保存し、このデータを使用して関数を呼び出してファイルを送信します

知りたいのですが、もっと良い方法はありますか?個々の listwidgetitem の詳細を何らかの方法でカスタム子ウィジェットに保存し、アイテムをクリックしたときに送信できる場合は、すべての詳細を取得し、関数を呼び出してペアリングを行い、ファイルを送信しますか??

どうか私を助けてください。

ありがとうございました