問題タブ [qtwidgets]
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++ - 親を持たないメイン ウィンドウで WA_DeleteOnClose 属性を使用することは可能ですか?
私はWA_DeleteOnClose
必要なものを正確に実装する属性を試しています。同じことを手動で行うよりもはるかにきれいです。ただし、問題があります。親なしで適用される myQMainWindow
を作成WA_DeleteOnClose
すると、閉じるときに削除されません。また、親 (QMainWindow
アプリケーションのメイン) を設定すると、問題のセカンダリQMainWindow
はタスクバー ボタンを失いますが、これは受け入れられません。このジレンマをどのように解決できますか?
c++ - ウィジェットの幅が変更されたときに QHeaderView 列のサイズを変更しながら、ユーザーは列の幅を変更できます
ビューの境界線の後ろに列を移動できるなど、ユーザーが手動で列のサイズを変更できるようにしたいのですが、ビューのサイズが変更されたときに列のサイズを比例的に変更したいのです。resizeEvent
ヘッダー ビューにフィルターをインストールし、列のサイズを手動で変更するよりも適切な決定はありますか?
更新: で動作させることさえできませんでしたresizeEvent
。この作業は、見た目よりもはるかに困難です。
c++ - 暗号化された設定を Qt/C++ に保存するにはどうすればよいですか?
私は Qt と C++ を初めて使用し、Mac 用のウィジェット ベースのアプリケーションを作成しています。設定 (チェックボックス、ラジオ ボタン、フィールド) が設定されたフォームを想像してください。[更新] をクリックしてこれらの設定を保存します。他のアプリケーションがそのファイルをハッキングできないように、そのデータを暗号化されたファイルに保存したいと考えています。おすすめの技は?また、この種のものに最適な暗号化方法は何ですか?
qt - Windows での QT 高 DPI サポート
ここのドキュメントによるとhttp://doc.qt.io/qt-5/highdpi.htmlQT 5.4+ では、高 DPI サポートが導入されています。ただし、基本的なものが欠けているか、現在のサポートがまだ非常に初期段階にあります。私はまったく新しいアプリケーションを作成しているので、ゼロから作成するチャンスがあります。固定配置などの代わりにレイアウトを使用する必要があることは理解していますが、たとえばコントロールの最小/最大サイズなど、指定する必要がある場合が常にあります。エディターで指定できますが、これらはデバイス ピクセルです。そのため、Windows の設定を 150% DPI を使用するように変更すると、エディターの最小値/最大値が小さすぎます。もちろん、その比率を取得し、必要なすべての値をコードで調整することはできますが、すべてを手動で行う必要がある場合、QT はどのような高 DPI サポートを提供してくれるのでしょうか? つまり、QT 5.4 より前とどう違うのですか?
次に興味深いのは QT_DEVICE_PIXEL_RATIO 環境変数です。それはまさに私が必要とすることを行い、エディターで設定されたすべてのピクセルを係数で乗算します。しかし、なぜアプリケーションごとの設定ではなく、環境変数なのでしょうか? Windows には 125、150% などの設定があることがわかっているのに、なぜ 2、3 などの整数値のみをサポートし、Windows の設定を自動的に読み取ってその値に設定できないのですか?
c++ - 親ダイアログの QGridLayout に子ウィジェットの QGridLayout をマージする方法はありますか?
グリッドのようなダイアログを作成するとき、同じ構造を持つ複数の列が必要になることがよくあります。列の数は実行時にしかわかりません (同じ種類のオブジェクトの複数のインスタンスの構成パラメーターを考えてください)。
この状況では、通常の Qt ウィジェット デザイナーでは不十分です。さまざまなヘッダーと「プロトタイプ列」を快適に設計できますが、実行時にそのような列の作成を複製する簡単な方法がないためです (すべてのウィジェットが一緒に作成されます)。であり、ssetupUi
を複製する簡単な方法はありませんQWidget
)。
別の方法として、「プロトタイプ列」を別のカスタム ウィジェット ( を使用して子ウィジェットを整列させるQVBoxLayout
) に分割し、そのようなカスタム ウィジェットを実行時に親ダイアログでインスタンス化し、それらのインスタンスをQHBoxLayout
.
このアプローチの問題は、それぞれQVBoxLayout
が他の列を考慮せずに独自に計算を実行するため、異なる列のウィジェットが水平方向に整列されない可能性があるため、目的のグリッド レイアウトが簡単に台無しになることです。
頭に浮かぶ唯一の他の可能性は、説明されているようにプロトタイプ列を別のウィジェットに分割することですが、カスタムウィジェットを に配置する代わりに、QHBoxLayout
その子を「盗み」、それらを親に正しく配置しQGridLayout
ます。これにより、目的のグラフィック効果が得られますが、子の親を変更してカスタム ウィジェットを非表示にするのは、少しハックのように感じます。
さて、私の質問は2つあります:
- 「偽の」コンテナがそれらに特別なことをしないことを考えると、そのような子ウィジェットを喜んで再親化する際に私が気付いていない可能性のある潜在的な問題はありますか?
- この問題に対するより良いアプローチはありますか? 理想的には、子ウィジェットを「メイン」グリッドとマージする方法を考えたいと思いますが
QGridLayout
、そのようなことはないようです。
c++ - QWidgets がポインターによってアクセスされるのはなぜですか?
私は Qt5 を初めて使用し、アプリケーションを開発するために QWidgets を学習しています。
多くの例で気づいたのですが、QWidgets はほとんどの場合ポインターによってアクセスされます。例えば:
これはチュートリアルから取ったものです: http://zetcode.com/gui/qt5/firstprograms/
それでも、同じページで、オブジェクト自体によって QWidget 基本クラスにアクセスできることがわかります。
すべての QWidget 派生クラスにポインターでアクセスする必要があるのはなぜですか? ポインターで QWidget 自体にアクセスする必要がないのはなぜですか?