目前美化效果就是把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(); } }