目录
1.Qt窗口
2.QMainWindow
1.QMenuBar
1.创建菜单栏
2.在菜单栏上添加菜单
3.创建菜单项
4.菜单项之间添加分割线
2.QToolBar
1.创建工具栏
2.设置停靠方式
3.设置浮动属性
4.设置移动属性
3.QStatusBar
1.状态栏的创建
2.显示实时消息
3.显示永久消息
4.QDockWidget
1.浮动窗口的创建
2.设置停靠的位置
3.QDialog
1.QMessageBox
2.QColorDialog
3.QFileDialog
4.QFontDialog
5.QInputDialog
1.Qt窗口
Qt 中的窗口(Window)是 GUI 应用程序的核心元素,用于显示用户界面和承载控件。窗口通常由QWidget或其派生类实现,如QMainWindow和QDialog。
2.QMainWindow
1.QMenuBar
QMenuBar是 Qt 中用于创建菜单栏的控件,通常用于主窗口( QMainWindow )中,为用户提供菜单项的操作入口。
1.创建菜单栏
方式⼀:菜单栏的创建可以借助于 QMainWindow类提供的 menuBar() 函数来实现。
QMenuBar *menubar=menuBar();
this->setMenuBar(menubar);
方式二:在堆上动态创建。
QMenuBar *menubar=new menuBar(this);
this->setMenuBar(menubar);
2.在菜单栏上添加菜单
QMenuBar *menubar=menuBar();
this->setMenuBar(menubar);
QMenu *menu1=new QMenu("文件");
QMenu *menu2=new QMenu("编辑");
QMenu *menu3=new QMenu("构建");
menubar->addMenu(menu1);
menubar->addMenu(menu2);
menubar->addMenu(menu3);
3.创建菜单项
QAction *act1=new QAction("open");
QAction *act2=new QAction("close");
QAction *act3=new QAction("create");
menu1->addAction(act1);
menu1->addAction(act2);
menu1->addAction(act3);
4.菜单项之间添加分割线
menu1->addAction(act1);
menu1->addSeparator();
menu1->addAction(act2);
menu1->addAction(act3);
2.QToolBar
1.创建工具栏
QToolBar *toolBar1=new QToolBar(this);
QToolBar *toolBar2=new QToolBar(this);
this->addToolBar(toolBar1);
this->addToolBar(toolBar2);
2.设置停靠方式
Qt::LeftToolBarArea 停靠在左侧Qt::RightToolBarArea 停靠在右侧Qt::TopToolBarArea 停靠在顶部Qt::BottomToolBarArea 停靠在底部Qt::AllToolBarAreas 以上四个位置都可停靠
QToolBar *toolBar1=new QToolBar(this);
QToolBar *toolBar2=new QToolBar(this);
this->addToolBar(Qt::LeftToolBarArea,toolBar1);
this->addToolBar(Qt::RightToolBarArea,toolBar2);
QToolBar *toolBar1=new QToolBar(this);
QToolBar *toolBar2=new QToolBar(this);
this->addToolBar(toolBar1);
this->addToolBar(toolBar2);
toolBar1->setAllowedAreas(Qt::LeftToolBarArea);
toolBar2->setAllowedAreas(Qt::RightToolBarArea);
3.设置浮动属性
QToolBar *toolBar1=new QToolBar(this);
QToolBar *toolBar2=new QToolBar(this);
this->addToolBar(Qt::LeftToolBarArea,toolBar1);
this->addToolBar(Qt::RightToolBarArea,toolBar2);
toolBar1->setFloatable(true);//允许浮动
toolBar2->setFloatable(false);//不允许浮动
4.设置移动属性
QToolBar *toolBar1=new QToolBar(this);
QToolBar *toolBar2=new QToolBar(this);
this->addToolBar(Qt::LeftToolBarArea,toolBar1);
this->addToolBar(Qt::RightToolBarArea,toolBar2);
toolBar1->setMovable(true);//允许移动
toolBar2->setMovable(false);//不允许移动
3.QStatusBar
实时消息:如当前程序状态永久消息:如程序版本号,机构名称进度消息:如进度条提示,百分百提示
1.状态栏的创建
QStatusBar *stbar=statusBar();
setStatusBar(stbar);
2.显示实时消息
stbar->showMessage("Hello_Qt",2000);
3.显示永久消息
QStatusBar *stbar=statusBar();
setStatusBar(stbar);
QLabel *label=new QLabel("提示信息",this);
stbar->addWidget(label);
QLabel *label2=new QLabel("右侧提示信息",this);
stbar->addPermanentWidget(label2);
4.QDockWidget
1.浮动窗口的创建
QDockWidget *dockwidget=new QDockWidget("浮动窗口",this);
addDockWidget(Qt::BottomDockWidgetArea,dockwidget);
2.设置停靠的位置
Qt::LeftDockWidgetArea 停靠在左侧Qt::RightDockWidgetArea 停靠在右侧Qt::TopDockWidgetArea 停靠在顶部Qt::BottomDockWidgetArea 停靠在底部Qt::AllDockWidgetAreas 以上四个位置都可停靠
dockwidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
3.QDialog
对话框分为模态对话框和非模态对话框。
connect(ui->action_2,&QAction::triggered,[=](){QDialog dlg(this);dlg.resize(200,100);dlg.exec();
});
connect(ui->action_2,&QAction::triggered,[=](){QDialog *dlg=new QDialog(this);dlg->resize(200,100);dlg->setAttribute(Qt::WA_DeleteOnClose);dlg->show();
});
dlg->setModal(true);
1.QMessageBox
resize(800,600);
QPushButton *btn=new QPushButton("消息对话框",this);
QMessageBox *msg=new QMessageBox(this);
msg->setWindowTitle("Warning Message");
msg->setText("Error Message!");
msg->setIcon(QMessageBox::Question);
msg->setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);
connect(btn,&QPushButton::clicked,[=](){msg->show();
});
msg->setIcon(QMessageBox::Warning);
msg->setIcon(QMessageBox::Critical);
2.QColorDialog
1、 QColorDialog (QWidget *parent = nullptr) //创建对象的同时设置父对象2、 QColorDialog(const QColor &initial, QWidget *parent = nullptr) //创建对象的同时通过QColor 对象设置默认颜色和父对象3、 void setCurrentColor(const QColor &color) //设置当前颜色对话框4、 QColor currentColor() const //获取当前颜色对话框5、 QColor getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options=ColorDialogOptions()) //打开颜色选择对话框,并返回⼀个QColor对象
参数说明:initial:设置默认颜色parent:设置父对象title:设置对话框标题options:设置选项
resize(800,600);
QPushButton *btn=new QPushButton("消息对话框",this);
QColorDialog *cdlg=new QColorDialog(this);
connect(btn,&QPushButton::clicked,[=](){QColor color=cdlg->getColor(QColor(255,0,0));qDebug()<<"r="<<color.red();qDebug()<<"g="<<color.green();qDebug()<<"b="<<color.blue();
});
3.QFileDialog
1、打开文件(⼀次只能打开⼀个文件)QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())2、打开多个文件(⼀次可以打开多个文件)QStringList getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())3、 保存文件QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())参数说明:参数1:parent 父亲参数2:caption 对话框标题参数3:dir 默认打开的路径参数4:filter 文件过滤器
resize(800,600);
QPushButton *btn=new QPushButton("文件",this);
QFileDialog *fdlg=new QFileDialog(this);
connect(btn,&QPushButton::clicked,[=](){QString str=fdlg->getOpenFileName(this,"文件","C:\\Users\\25713\\Pictures\\图片","*.jpg");qDebug()<<str;
});
4.QFontDialog
resize(800,600);
QPushButton *btn=new QPushButton("字体",this);
connect(btn,&QPushButton::clicked,[=](){bool flag;QFont font=QFontDialog::getFont(&flag,QFont("华文行楷",36));qDebug()<<"字体:"<<font.family().toUtf8().data();qDebug()<<"字号:"<<font.pointSize();qDebug()<<"是否加粗:"<<font.bold();qDebug()<<"是否倾斜:"<<font.italic();
});
5.QInputDialog
1、双精度浮点型输入数据对话框double getDouble (QWidget *parent, const QString &title, const QString &label, doublevalue = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());2、整型输入数据对话框int getInt (QWidget *parent, const QString &title, const QString &label, int value = 0, intmin = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());3、选择条目型输入数据框QString getItem (QWidget *parent, const QString &title, const QString &label, constQStringList &items, int current = 0, bool editable = true, bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints =Qt::ImhNone) ;参数说明:parent:父亲title:对话框标题label:对话框标签items:可供选择的条目
resize(800,600);
QPushButton *btn=new QPushButton("输入框",this);
QInputDialog *idlg=new QInputDialog(this);
connect(btn,&QPushButton::clicked,[=](){int i=idlg->getInt(this,"输入框","Int");qDebug()<<"i="<<i;
});