在我的應用程序中,我在前臺有一張桌子。它有一個透明的背景,所以我可以通過它看到帶有圖像的標籤。表格和標籤的尺寸完全相同。在桌子後面的圖層上繪製標籤
我想繪製標籤,而表仍然可以看到,但不可用。由於標籤是表格後面的圖層,因此即使禁用表格並禁用焦點,我也無法繪製它。它只適用於標籤在前景中,但這意味着表格不再可見。
我想,只要我打了一個按鈕,得出:
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