
目前美化效果就是把TabWidget變透明、設定控制台名稱、并且隐藏TabBar和标題欄。代碼如下
this->setWindowTitle("控制台"); //設定程式名稱
this->setWindowFlag(Qt::FramelessWindowHint); //隐藏标題欄
ui->tabWidget_controlPanel->tabBar()->hide(); //隐藏TabBar
ui->tabWidget_controlPanel->setStyleSheet("QTabWidget::pane{border-top: 2px solid #00000000;}"); //設定TabWidget樣式表
因為我們隐藏了原本視窗自帶的标題欄,是以需要我們自己來實作一個關閉的功能,目前計劃使用滑鼠和鍵盤兩種方式,滑鼠右鍵菜單彈出關閉按鈕和鍵盤“ESC鍵”及“Q鍵”來控制程式關閉。滑鼠右鍵實作如下
代碼如下
void ControlPanel::on_tabWidget_controlPanel_customContextMenuRequested(const QPoint &pos)
{
Q_UNUSED(pos)
QMenu *menu = new QMenu(this);
menu->setStyleSheet("QMenu{background-color: #55f6c82c;border: 1px solid white;}"
"QMenu::item{/*background-color: transparent;padding:8px 32px;margin:0px 8px;*/color:#000000;}"
"QMenu::item:selected{background-color: #f6c82c;}");
QAction *action_Close = new QAction("關閉",this);
menu->addAction(action_Close);
connect(action_Close,&QAction::triggered,this,[=](){this->close();});
menu->exec(cursor().pos());
QList<QAction*> list = menu->actions();
foreach (QAction* pAction, list) delete pAction;
delete menu;
}
鍵盤事件的實作就更加簡單了
頭檔案添加鍵盤事件引用
#include <QKeyEvent>
重載keyevent,代碼如下
void ControlPanel::keyReleaseEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Escape || event->key() == Qt::Key_Q)
{
this->close();
}
}