天天看點

qt控件學習(4)QTabWidget 控件QMenu、QToolBar 控件QSystemTrayIcon 工作列控件

文章目錄

  • QTabWidget 控件
  • QMenu、QToolBar 控件
  • QSystemTrayIcon 工作列控件

QTabWidget 控件

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QTabWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT


public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QTabWidget *tabWidget;



};
#endif // MAINWINDOW_H


//tabA 類
class tabA:public QWidget
{
 Q_OBJECT
public:
 tabA(QWidget *parent=0);
};
//tabB 類
class tabB:public QWidget
{
 Q_OBJECT
public:
 tabB(QWidget *parent=0);
};

           

mainwindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

#include <QWidget>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("test app");
    this->setWindowIcon(QIcon(":/new/prefix1/images/favicon.ico"));
//    this->setWindowFlags(Qt::FramelessWindowHint);
//    this->setAttribute(Qt::WA_TranslucentBackground, true);
//    this->setStyleSheet("background:red");

    //執行個體 QTabWidget
    tabWidget = new QTabWidget(this);
    tabWidget->setGeometry(QRect(0,0,this->width(),this->height()));
    tabWidget->addTab(new tabA,"A 欄目");
    tabWidget->addTab(new tabB,"B 欄目");


}

MainWindow::~MainWindow()
{
    delete ui;
}

tabA::tabA(QWidget *parent):QWidget(parent)
{
 QPushButton *buttonA = new QPushButton(this);
 buttonA->setText("頁面 A");
}

tabB::tabB(QWidget *parent):QWidget(parent)
{
 QPushButton *buttonB = new QPushButton(this);
 buttonB->setText("頁面 B");
}

           

效果圖

qt控件學習(4)QTabWidget 控件QMenu、QToolBar 控件QSystemTrayIcon 工作列控件

QMenu、QToolBar 控件

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QToolBar>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
private slots:
    void newFile();

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QMenu *fileMenu, *editMenu, *helpMenu;
    QToolBar *fileToolBar, *editToolBar;
    QAction *newAct;
    QAction *cutAct;
    QAction *copyAct;
    QAction *pasteAct;
    QAction *aboutQtAct;




};
#endif // MAINWINDOW_H


//tabA 類
class tabA:public QWidget
{
 Q_OBJECT
public:
 tabA(QWidget *parent=0);
};
//tabB 類
class tabB:public QWidget
{
 Q_OBJECT
public:
 tabB(QWidget *parent=0);
};

           

mainwindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("test app");
    this->setWindowIcon(QIcon(":/new/prefix1/images/favicon.ico"));
//    this->setWindowFlags(Qt::FramelessWindowHint);
//    this->setAttribute(Qt::WA_TranslucentBackground, true);
//    this->setStyleSheet("background:red");

    //執行個體菜單
    fileMenu = new QMenu(this);
    editMenu = new QMenu(this);
    helpMenu = new QMenu(this);

    //填充菜單子節點
    newAct = new QAction(QIcon( ":/new/prefix1/images/favicon.ico" ), tr( "建立" ), this );
    newAct->setShortcut(tr("Ctrl+N" ));
    newAct->setStatusTip(tr("建立檔案" ));
    connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
    cutAct = new QAction(QIcon(":/new/prefix1/images/favicon.ico" ), tr( "剪切" ), this );
    cutAct->setShortcut(tr("Ctrl+X" ));
    cutAct->setStatusTip(tr("剪切内容" ));
    copyAct = new QAction(QIcon( ":/new/prefix1/images/favicon.ico" ), tr( "複制" ), this );
    copyAct->setShortcut(tr("Ctrl+C" ));
    copyAct->setStatusTip(tr("複制内容" ));
    pasteAct = new QAction(QIcon( ":/new/prefix1/images/favicon.ico" ), tr( "粘貼" ), this );
    pasteAct->setShortcut(tr("Ctrl+V" ));
    pasteAct->setStatusTip(tr("粘貼内容" ));
    aboutQtAct = new QAction(tr( "關于 Qt" ), this );
    aboutQtAct->setStatusTip(tr("關于 Qt 資訊" ));
    connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
    //填充菜單
    fileMenu = menuBar()->addMenu(tr( "檔案" ));
    fileMenu->addAction(newAct);
    fileMenu->addSeparator();
    editMenu = menuBar()->addMenu(tr("編輯" ));
    editMenu->addAction(cutAct);
    editMenu->addAction(copyAct);
    editMenu->addAction(pasteAct);
    menuBar()->addSeparator();
    helpMenu = menuBar()->addMenu(tr("幫助" ));
    helpMenu->addAction(aboutQtAct);
    //toolBar 工具條
    fileToolBar = addToolBar(tr("建立"));
    fileToolBar->addAction(newAct);
    editToolBar = addToolBar(tr("修改"));
    editToolBar->addAction(cutAct);
    editToolBar->addAction(copyAct);
    editToolBar->addAction(pasteAct);

}

MainWindow::~MainWindow()
{
    delete ui;
}

//子菜單事件
void MainWindow::newFile(){
 QMessageBox::warning(this,tr("Warning"),
 tr("建立新檔案?"),
 QMessageBox::Yes | QMessageBox::Default,
 QMessageBox::No);
}


           

效果圖

qt控件學習(4)QTabWidget 控件QMenu、QToolBar 控件QSystemTrayIcon 工作列控件

QSystemTrayIcon 工作列控件

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QSystemTrayIcon>//工作列類
#include <QMenu>//菜單類

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
private slots:
    void showNormal();


public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QSystemTrayIcon *myTrayIcon;
    QMenu *myMenu;
    QAction *restoreWinAction;
    QAction *quitAction;
    void createMenu();





};
#endif // MAINWINDOW_H

           

mainwindow.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("test app");
    this->setWindowIcon(QIcon(":/new/prefix1/images/favicon.ico"));
    //    this->setWindowFlags(Qt::FramelessWindowHint);
    //    this->setAttribute(Qt::WA_TranslucentBackground, true);
    //    this->setStyleSheet("background:red");

    createMenu();
    //判斷系統是否支援托盤圖示
    if (!QSystemTrayIcon::isSystemTrayAvailable())
    {
        return;
    }
    //執行個體 QSystemTrayIcon
    myTrayIcon = new QSystemTrayIcon(this);
    //設定圖示
    myTrayIcon->setIcon(QIcon(":/new/prefix1/images/favicon.ico"));
    //滑鼠放托盤圖示上提示資訊
    myTrayIcon->setToolTip("Qt 托盤圖示功能");
    //設定消息
    myTrayIcon->showMessage("托盤", "托盤管理", QSystemTrayIcon::Information, 10000);
    //托盤菜單
    myTrayIcon->setContextMenu(myMenu);
    //顯示
    myTrayIcon->show();
}

MainWindow::~MainWindow()
{
    delete ui;
}

//繪制菜單
void MainWindow::createMenu()
{
    restoreWinAction = new QAction("恢複(&R)", this);
    quitAction = new QAction("退出(&Q)", this);
    //恢複
    connect(restoreWinAction, SIGNAL(triggered()), this, SLOT(showNormal()));
    //退出
    connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
    myMenu = new QMenu((QWidget *)QApplication::desktop());
    //添加菜單
    myMenu->addAction(restoreWinAction);
    //分隔符
    myMenu->addSeparator();
    myMenu->addAction(quitAction);
}
//恢複
void MainWindow::showNormal()
{
    this->show();
}
//點選最小化按鈕隐藏界面
void QWidget::changeEvent(QEvent *e)
{
    if ((e->type() == QEvent::WindowStateChange) && this->isMinimized())
    { //QTimer::singleShot(100, this, SLOT(hide()));
        this->hide();
    }
}

           

效果圖

qt控件學習(4)QTabWidget 控件QMenu、QToolBar 控件QSystemTrayIcon 工作列控件

繼續閱讀