其实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对话框的内容大致结束,这只是简单的使用控件达到一些简单的应用。