QT文件路径必须要纯英文
#include "mainwindow.h"
#include
int main(int argc, char *argv[])
{
\\有且只有一个应用程序对象
QApplication a(argc, argv);
\\继承于QMainWindow,为一个窗口
MainWindow w;
\\窗口默认隐藏,这里让他显示(可以用这个原理来设计隐藏窗口)
w.show();
\\a.exec()让用户输入,让窗口不会自动谈入
return a.exec();
}
/*为了让代码简便,我们将函数功能写在类中,一般不写入main函数中!!!!*/
对于一个新的模块需要添加qmake,可以通过在头文件中按F1查找。例如
#include //需要添加QT += Widigets
这里的操作需要注意大小写以及+=符号的位置,否则会导致模块无法被识别
Qt += widgets //指定这个为图形化界面编程,引用QWidget
#include
#include //窗口控件基类
int main(int *argc,char **argv)
{
QApplication app(argc,argv);
QWigets w;
w.setWindowTitle("这个标题"); //!!!!设置标题
w.show();
app.exec();
return 0;
}
#include
注意事项:
思路:在主窗口中定义一个private成员为subwindow类(继承于QWidget),在构造函数中定义利用show将其展示
窗口大小的定义:
resize(100,100);
为了让button在触发之后出现反应,我们需要用信号的形式传递出去
常用的信号:
自定义信号步骤:
实例:
设计两个窗口,且每个窗口都有一个按钮时,我们希望按下按钮就可以切换到另外一个窗口,那么当子窗口切换到主窗口时无法发送信号,就需要自定义信号。
对于子窗口SubWidget中对象:
signal:
void mysignal;
void sendsignal()
{
emit mysignal();
}
在SubWidget.c中
/*此处b为SubWidget上面的按钮*/
connect(&b,&QPushButton::released,this,&SubWidget::sendsignal);
!!!关键词 emit 发送信号
信号的重载:
使用指向函数的指针进行实现!!
自定义槽步骤:
实例:
/*这里myslot为自己定义的槽函数*/
connect(&b,&QPustButton::released,&a,&MyWidget::myslot);
在MyWidget.h中:
public:
void myslot();
在MyWidget.cpp中:
void MyWidget::myslot()
{
//隐藏主窗口
this.hide();
//显示子窗口
b.show();
}
connect(信号发出方地址,signal,信号接收方,slot);
实例:
QPushButton b;
QWidget a;
b.setParent(&a);
/*因为一般写入构造函数,&a一般用this指针*/
connect(&b,&QPustButton::released,&a,&QWidget::close);
注意事项:注意在slot和signal的时候要写入全局变量的引用
前期准备:
在.pro 文件中要加入
CONFIG += C++11
使用方法:
Lamda表达式详细解释(C++11)
connect(&b,&QPushButton:released,
[=]()
{
qDebug()<<"Lamda表达式";
}
)
move移动位置
//菜单栏
#include
#include
#include
QMenuBar *MenuBar = menuBar(); //系统定义了menuBar()
//菜单
QMenu *PFile = MenuBar->addMenu("文件");
//添加菜单项(action)
QAction *PFile_new = PFile->addAction("新建");
QAction中的信号:
处理代码
connect(PFile_new,&QAction::triggered,b,slot);//这里PFile_new为指针
//工具栏添加快捷方式
#include
#include
QToolBar *toolBar = addToolBar("tool");
//添加快捷键
toolbar->addAction(PFile_new);
//添加小控件
QPushButton b;
b.setText("控件");
toolbar->addWidget(&b);
#include
#include
{
QStatusBar *Sbar = statusBar();//以及定义
QLabel *label = new QLable(this);
label -> setText("Normal text file");
//addWidget从左往右添加
Sbar->addWidget(label); //或者 Sbar->addWidget(new QLabel("2",this));
//addPermanentWidget() 从右往左
}
#include
QTextEdit *textedit = new QTextEdit(this);
setCentralWidget(textedit); //将文本编辑器放在中心
操作对话框同时无法操作之后的窗口
#include
{
QDialog dlg;
dlg.exec();
}
操作时可以操作后面的窗口
#include
{
//dlg当做成员,防止释放
dlg.show();
}
是否/多个选项的对话框
#include
{
//关于对话框(一个选项)
QMessageBox::about(this,标题,内容);
//问题对话框(多个选项)
int re = QMessageBox::question(this,标题,内容,按钮1|按钮2|按钮3);
/*这个对话框可以通过int变量接收结果*/
switch(re)
{
case QMessageBox::Yes:
操作1;
case QMessageBox::No:
操作2;
}
}
#include
{
//获得文件名字
QString str = QFileDialog::getOpenFileName(
this,
"open", //标题
"../", //上一级路径
"Text(*.txt *cpp);;Image(*png *jpg);;all(*.*)" //指定文件类型
)
}