天天看點

Qt [GC9-7]:控制台基本設定及增加滑鼠右鍵菜單和鍵盤事件

Qt [GC9-7]:控制台基本設定及增加滑鼠右鍵菜單和鍵盤事件
Qt [GC9-7]:控制台基本設定及增加滑鼠右鍵菜單和鍵盤事件

目前美化效果就是把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鍵”來控制程式關閉。滑鼠右鍵實作如下

Qt [GC9-7]:控制台基本設定及增加滑鼠右鍵菜單和鍵盤事件
Qt [GC9-7]:控制台基本設定及增加滑鼠右鍵菜單和鍵盤事件

代碼如下

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();
    }
}      
Qt [GC9-7]:控制台基本設定及增加滑鼠右鍵菜單和鍵盤事件

繼續閱讀