this->resize(500,400); this->setWindowTitle("主窗口"); QLabel* label=new QLabel("標簽",this); label->setAttribute(Qt::WA_DeleteOnClose,true); //使控件在接受close關閉事件時,就刪除控件--釋放控件資源;指針還是存在的 //這種方法有個弊端:因為這個指針是沒有辦法自動設為NULL,會變為野指針 label->close(); label=new QLabel("AAA",this); label->show();
Qt::WA_QuitOnClose 表示當擁有該屬性的最后一個部件接受到QCloseEvent事件時,讓Qt終止應用程序。默認情況下,所有Qt::Window類型的部件都具有該屬性
this->resize(500,400); this->setWindowTitle("主窗口"); QLabel* label=new QLabel("標簽",this); label->setAttribute(Qt::WA_NoSystemBackground,true); //小部件沒有背景,即當小部件接收到繪制事件時,不會自動重新繪制背景--部件的背景透明 label->setStyleSheet("background-color: rgb(255, 251, 100)");
label->setAttribute(Qt::WA_TranslucentBackground,true); //小部件具有透明背景
QPushButton* button=new QPushButton("按鈕",this); connect(button,SIGNAL(clicked()),this,SLOT(f())); button->setAttribute(Qt::WA_TransparentForMouseEvents,true); //禁用向小部件及其子部件傳遞鼠標事件 //設置后按鈕雖然沒有變灰,但是不會接受鼠標事件了
以下為其他幾種屬性
Qt::WA_PaintOutsidePaintEvent
一般QPainter只能在PaintEvent事件中使用,使用此flag可以使在paintEvent 之外的函數中使用。
Qt::WA_AcceptDrops 允許將拖放操作中的數據拖放到窗口小部件上(請參閱QWidget :: setAcceptDrops())。
Qt::WA_AlwaysShowToolTips 為非活動窗口啟用工具提示。
Qt::WA_Disabled 表示窗口小部件已禁用,即它不接收任何鼠標或鍵盤事件。還有一個getter函數QWidget :: isEnabled()。這由Qt內核設置/清除。
Qt::WA_DontShowOnScreen 表示窗口小部件已隱藏或不是可查看桌面的一部分。
Qt::WA_MouseTracking 表示窗口小部件已啟用鼠標跟蹤。請參閱QWidget :: mouseTracking。
Qt::WA_NoMouseReplay 用於彈出窗口小部件(popup)。指示彈出窗口小部件關閉時不應重播最近的鼠標按下事件。該標志由小部件的作者設置,並在每次小部件接收到新的鼠標事件時由Qt內核清除