继承自QMainWindow类,在构造函数里创建实例
(引用新的widget时需要引入,头文件名与类名相同)
菜单
QMenuBar *mb=menuBar(); //创建菜单栏
QMenu *m1=mb->addMenu("file"); //添加菜单(菜单栏其中一项)
QAction *a1=m1->addAction("new");
//添加动作,这里可以看见点击菜单以后弹出的页
m1->addSeparator(); //添加分割线
QAction *a2=m1->addAction("open");
connect(a1,&QAction::triggered,this,
[](){
qDebug()<<"you're getting a new file";
}
); //lamda表达式,需要在.pro里添加CONFIG += C++11
工具栏
QToolBar *tb=addToolBar("");
QPushButton *p=new QPushButton(this);
p->resize(10,10); //设置大小
tb->addWidget(p); //给工具栏添加组件
状态栏
QStatusBar *sta=statusBar();
QLabel *la=new QLabel("hello",this);
//第一个参数是显示的文字,第二个对象是parent
sta->addWidget(la);
文本框
QTextEdit *te=new QTextEdit(this);
setCentralWidget(te); //设置为中心组件,显示在中间且占比最大
悬浮窗
QDockWidget *dc=new QDockWidget(this);
addDockWidget(Qt::RightDockWidgetArea,dc);
//显示位置,被操作悬浮窗
dc->setWidget(new QPushButton("oh",this));//这里用的是set
模态与非模态对话框
connect(a2,&QAction::triggered,this,
[](){
QDialog *dl=new QDialog();
dl->exec(); //运行时阻塞在此,实现模态对话框
}
);
connect(a1,&QAction::triggered,this,
[=](){ //等号负责把外面变量的参数传递进来(只读)
sw.show(); //在头文件添加子窗口成员变量传参,不阻塞,非模态
//或者通过动态分配内存(用指针),程序运行结束时再释放内存
QDialog *dl2=new QDialog();
dl2->setAttribute(Qt::WA_DeleteOnClose);//关闭的时候释放内存
dl2->show();
}
);
消息框
//parent,标题,内容,按钮
int exval=QMessageBox::question(this,"You want to exit","Are you sure?",
QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
//根据接收到的返回值做出相应的反应
switch (exval){
case QMessageBox::Yes:
qDebug()<<"yes";
break;
case QMessageBox::No:
qDebug()<<"no";
break;
default:
break;
}
}
文件对话框
//“../”表示从上一个路径开始展示,用mypath获得打开的文件的完整路径
//最后一项用来限制可以打开的文件格式,类名(类型),项内用空格,项间用;;
QString mypath=QFileDialog::getOpenFileName(this,"open","../",
"source(*.cpp *.h);;all(*.*)");
qDebug()<<mypath;