QT-菜单栏、工具栏等

    其实QT我感觉可以理解为一个库,编程上很多东西还是和C++一样,学的主要是QT的一些接口函数,当你遇到一定的需求,可以通过QT来实现就可以了。

1、菜单栏、工具栏等。

   程序主要仿照notepad的风格使用QT的控件实现简单的一些功能。

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDebug>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    //菜单栏
    QMenuBar *mBar=menuBar();
    //菜单
    QMenu *PFile=mBar->addMenu("文件");
    //添加菜单项
    QAction *PNew=PFile->addAction("新建");
    connect(PNew,&QAction::triggered,this,
            []()
    {
        qDebug()<<"新建";

    });
    PFile->addSeparator();//添加分割线
     QAction *POpen=PFile->addAction("打开");

    //工具
    QToolBar *ToolBar=addToolBar("toolBar");
    //工具栏添加快捷键
    ToolBar->addAction(PNew);
    //添加小控件
    QPushButton *B=new QPushButton(this);
    B->setText("*_*!");
    ToolBar->addWidget(B);
    connect(B,QPushButton::clicked,this,
            [B]()
    {
        B->setText("^_^");
    });
    //状态栏
    QStatusBar *QStatBar=statusBar();
    QLabel *label=new QLabel(this);
    label->setText("Normal text file");
    //addWidget 从左往右
    QStatBar->addWidget(label);
    QStatBar->addWidget(new QLabel("2",this));
    //
    QStatBar->addPermanentWidget(new QLabel("5688",this));
    //核心控件
    QTextEdit *TxtEdit =new QTextEdit(this);
    setCentralWidget(TxtEdit);

    //浮动窗口
    QDockWidget *DockWidge =new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea,DockWidge);
    //给浮动串口加控件
    QTextEdit *TxtEdit1 =new QTextEdit(this);
    DockWidge->setWidget(TxtEdit1);

}

MainWindow::~MainWindow()
{

}

   实际运行效果如下。

 

2、模态对话框、非模态对话框

模态对话框:不能点击此窗口外的东西。

非模态对话框:可以点击此窗口外的东西。

#include "mainwindow.h"
#include<QMenu>
#include <QMenuBar>
#include<QAction>
#include <QDialog>
#include <QT>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenuBar *mBar=menuBar();
    setMenuBar(mBar);
    QMenu *menu=mBar->addMenu("对话框");
    QAction *p=menu->addAction("模态对话框");
    connect(p,&QAction::triggered,this,
            []
    {
        QDialog dig;
        dig.exec();

    });
    QAction *p1=menu->addAction("非模态对话框");
    connect(p1,&QAction::triggered,this,
            []
    {
        //这样会直接释放掉
       // QDialog dig;
       // dig.show();
        //可以将这个变量放到成员函数这样对话框不会直接消失

        //可以动态分配,但是这样会有一个问题,程序不退出的话内存越用越少

        //
        QDialog *dig=new QDialog;
        dig->setAttribute(Qt::WA_DeleteOnClose);
        dig->show();


    });
}

MainWindow::~MainWindow()
{

}

产生两个对话框,一个模态一个非模态。

3、标准对话框和文件对话框

    

QT里面自带了标准的模式对话框,只需要调用就可以实现,不需要自己去实现每一个控件。

//帮助文档是个好东西
    QAction *p3=menu->addAction("标准对话框");
    connect(p3,&QAction::triggered,this,
            [=]
    {
     QMessageBox::about(this,"about","关于QT");
    });

    QAction *p4=menu->addAction("问题对话框");
    connect(p4,&QAction::triggered,this,
            [=]
    {
     int ret=QMessageBox::question(this,"question","ARE YOU OK?");
     switch(ret)
     {
     case QMessageBox::Yes:
         qDebug()<<"lalalal";
         break;
        defult:break;
     }
    });
}

运行结果如下:

帮助文档真的是个好东西的。

4、文件对话框

    

  QAction *p5=menu->addAction("文件对话框");
    connect(p5,&QAction::triggered,this,
            [=]
    {
       QString path= QFileDialog ::getOpenFileName(this,"OPEN","../","source(*.cpp *.c *.h);;"
                                                                     "Text(*.txt);;all(*.*);");
       qDebug()<<path;
    });

运行结果如下:

QT对话框的内容大致结束,这只是简单的使用控件达到一些简单的应用。

猜你喜欢

转载自blog.csdn.net/zl6481033/article/details/81069683
今日推荐