菜单栏
①include<QMenuBar>和<QMenu>:菜单栏和菜单
- 初始化新建菜单栏对象:QMenuBar *mBar = menuBar();
- 添加菜单:QMenu *pFile = mBar->addMenu("文件");//addMenu有三个重载可供选择,菜单名字为文件
- 添加菜单项,添加动作:QAction *pNew = pFile->addAction("新建");//返回一个QAction对象,菜单项名字为新建
- 匿名表达式:在pro文件加:CONFIG += C++11
- QAction 的信号:triggered(触发)
- QMenu 添加分割线:pFile -> addSeparator();
工具栏
①引入; #include<QToolBar>
②初始化新建工具栏对象:QToolBar *toolBar = addToolBar("toolBar");
③工具栏添加快捷键:toolBar->addAction(pNew);//pNew是之前的菜单动作对象
④在工具栏里添加按钮:
QPushButton *b = new QPushButton(this);
b->setText("^_^");
//添加小控件
toolBar->addWidget(b);
connect(b,&QPushButton::clicked,
[=]()
{
b->setText("123");
}
);
状态栏
①引入:#include<QStatusBar>
②初始化新建状态栏:QStatusBar *statusbar = statusBar();
③引入标签:#include<QLabel> //用于显示内容
QLabel *label = new QLabel(this);
label->setText("Normal test file");
④在状态栏添加子窗口标签:statusbar->addWidget(label);
⑤或直接添加:statusbar->addWidget(new QLabel("2",this));//addWidget从左往右依次添加
⑥从右往左添加:statusbar->addPermanentWidget(new QLabel("3",this));
核心控件
①引入:#include<QTextEdit>//文本编辑区
②初始化:QTextEdit *testEdit = new QTextEdit(this);
③设置核心控件:setCentralWidget(testEdit);
浮动窗口
①引入:#include<QDockWidget>
②初始化:QDockWidget *dock = new QDockWidget(this);
③加入浮动窗口:addDockWidget(Qt::LeftDockWidgetArea,dock); //参数的寻找见下
④查看帮助文档确定参数
对addDockWidget( F1)->点Qt::DockWidgetArea ->在下方选择
⑤在控件去添加文本编辑器:
QTextEdit *testEdit1 = new QTextEdit(this);
dock->setWidget(testEdit1);
(用的不多)模态与非模态对话框://模态操作的时候只能操作当前对话框
①引入:#include<QDialog>
②初始化:QDialog dlg;
③模态对话框使用:先把dlg当作类的一个成员再用dlg.show();,避免退出lamda表达式后释放 ;或者设置dlg的属性
QDialog *p = new QDialog;
p->setAttribute(Qt::WA_DeleteOnClose);
p->show();
标准对话框
①引入:#include<QMessageBox>
②设置只有一个按钮的对话框:QMessageBox::about(this,"about","关于QT"); //关于对话框
③设置有两个按钮的问题对话框:QMessageBox::question(this,"question","Are you ok?");
④如何知道用户按的按钮:点QMessageBox F1-> Public Types ->
enum StandardButton
找Yes 和 No,分别是QMessageBox::Yes 和QMessageBox::No
int ret = QMessageBox::question(this,"question","Are you ok?");
switch (ret)
{
case QMessageBox::Yes:
qDebug() << "i am ok";
break;
case QMessageBox::No:
qDebug() << "i am bad";
break;
default:
break;
}
⑤如何改变问题对话框的按钮内容:在QMessageBox::question的后两个参数附加上按钮对应的参数,
int ret = QMessageBox::question(this,"question","Are you ok?",QMessageBox::Ok,QMessageBox::Cancel);
文件对话框
①引入:#include<QFileDialog>
②在当前项目文件上一级目录使用文件对话框并获取选中文件的在内存中的地址:
QString path= QFileDialog::getOpenFileName(this,"open","../");
③在②基础上加上指定文件类型过滤器:
QString path= QFileDialog::getOpenFileName(this,"open","../",
“source(*.cpp *.h);;Text(*.txt);;all(*.*)”);
自定义控件
①Qt的使用:新建c++文件:点击项目->c++class
②写好子窗口的布局和添加控件
③点击widget_4,右击提升为,设置成如下
点击添加->提升
④自定义控件实现了,运行查看
⑤利用信号和槽实现自定义控件的功能(c++的强制类型转换:https://www.cnblogs.com/larry-xia/p/10325643.html)