私のアプリケーションでは、フォアグラウンドにテーブルがあります。それは透明な背景を持っているので、私はそれを介してイメージを持つラベルを見ることができます。テーブルとラベルのサイズはまったく同じです。テーブルの背後にあるレイヤーのラベルに描画する
テーブルが表示されていても使用できない状態で、ラベルに描画したいと思います。ラベルはテーブルの背後にあるレイヤーなので、テーブルを無効にしてフォーカスを無効にしても、ラベルを描画することはできません。ラベルがフォアグラウンドにある場合にのみ機能しますが、これはテーブルがもう表示されないことを意味します。
私はすぐに私はボタンを押して描画したい:しかし、働いていない
void MainWindow::on_btn_draw_clicked()
{
fg_table->setFocusPolicy(Qt::NoFocus);
fg_table->setEnabled(false);
bg_label->setFocusPolicy(Qt::StrongFocus);
bg_label->setFocus();
}
。テーブルは無効になっており、使用できません(これは正しい)が、bg_label
に描画することはできません。
デザイナでは、bg_label
はQLabelから継承するクラス 'DrawLabel
'のプレースホルダです。クラスでは描画が可能になり、さまざまなマウスイベントに反応することができます。すべてがうまく動作し、理論的に描くことができますが、bg_label
がテーブルの後ろにあるレイヤーである場合は表示されません。
は、私はあなたが/上げる
bg_label->activateWindow();
bg_label->raise();
とウィジェットの層を下げることができることを知っているが、これは私が欲しいものではありません。レイヤーは変更しないでください。ちょうどbg_label
のテーブルの後ろに描画したいと思います。
これを達成する方法はありますか?私はどこでも同じような問題は見ていません。
「私はそれを上手に描くことができません」ということをより正確に説明する必要があると思います。ペイントイベントを受け取っていないか、ユーザーイベントと対話していないことを意味しますか? –
私はこの例のように私のラベルを描くことができます:http://doc.qt.io/qt-5/qtwidgets-widgets-scribble-example.html これは私もマウスのプレス、移動、リリースのイベントがあることを意味しますペイントイベントなどがあります。ラベルがトップレイヤーのときはすべてうまく動作しますが、テーブルの背後にあるので動作しません。マウスイベントが呼び出されないため、何も描画されません。 – GoYoshi