
qt学习之—mainwindow的菜单栏、工具栏、状态栏、核心控件、浮动窗口、模态和非模态窗口、标准对话框和文件对话框
【代码】qt学习之—mainwindow的菜单栏、工具栏、状态栏、核心控件、浮动窗口、模态和非模态窗口、标准对话框和文件对话框。
·
#pragma execution_character_set("utf-8")
#include "MenuTest.h"
#include <qmenu.h>
#include <qmenubar.h>
#include <qaction.h>
#include <qtoolbar.h>
#include <qdebug.h>
#include <qstatusbar.h>
#include <qlabel.h>
#include <qtextedit.h>
#include <qdockwidget.h>
#include <qpushbutton.h>
#include <qdialog.h>
#include <qmessagebox.h>
#include <qfiledialog.h>
MenuTest::MenuTest(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//UI设置
// ui.menuBar->addMenu("文件")->addAction("新建");
菜单栏
//QMenuBar* menuBar = new QMenuBar(this);
添加菜单
//QMenu* pFile = menuBar->addMenu("文件");
添加菜单项动作
//QAction* pAction = pFile->addAction("新建");
//connect(pAction, &QAction::triggered,
// [=]()
// {
// qDebug() << "新建按钮被点击";
// });
//QToolBar* toolBar = addToolBar("工具栏");
工具栏添加快捷键
//toolBar->addAction(pAction);
//菜单栏
connect(ui.actionnew, &QAction::triggered,
[=]()
{
qDebug() << "新建按钮被点击";
}
);
//对话框
//模态对话框
connect(ui.action1, &QAction::triggered,
[=]()
{
QDialog dlg;
dlg.resize(100, 100),
dlg.exec();
qDebug() << "模态对话框被点击";
}
);
//非模态对话框
connect(ui.action, &QAction::triggered,
[=]()
{
//动态分配空间,结束时才能释放
//QDialog* dlg1 = new QDialog(this);
//不指定父对象,使用setAttribute关闭时候自动释放
QDialog* dlg1 = new QDialog;
dlg1->setAttribute(Qt::WA_DeleteOnClose);
dlg1->resize(100, 100),
dlg1->show();
qDebug() << "非模态对话框被点击";
}
);
connect(ui.action_3, &QAction::triggered,
[=]()
{
QMessageBox::about(this, "about对话框", "关于对话框");
}
);
connect(ui.action4, &QAction::triggered,
[=]()
{
int ret = QMessageBox::question(this, "问题对话框","Are you ok?");
switch (ret) {
case QMessageBox::Yes:
qDebug() << "I AM OK";
break;
case QMessageBox::No:
qDebug() << "not bad";
break;
}
}
);
//文件对话框
connect(ui.action5, &QAction::triggered,
[=]()
{
QString path = QFileDialog::getOpenFileName(this,
"open file",
"../",
"souce(*.cpp *.h);;text(*.txt);;all(*.*)"//过滤条件
);
qDebug() << path;
}
);
//工具栏
QToolBar* toolBar = addToolBar("工具栏");
QAction* newAction = new QAction("new");
connect(newAction, &QAction::triggered,
[=]()
{
qDebug() << "工具栏新建按钮被点击";
}
);
toolBar->addAction(newAction);
//状态栏
QLabel* statusLabel = new QLabel(this);
statusLabel->setText("状态信息");
ui.statusBar->addWidget(statusLabel);
//addWidget从左往右添加
ui.statusBar->addWidget(new QLabel("2", this));
//addPermanentWidget从左往右添加
ui.statusBar->addPermanentWidget(new QLabel("3", this));
//核心控件,设立一个中心
QTextEdit* textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
//浮动窗口
QDockWidget* dockWidget = new QDockWidget(this);
//Qt::RightDockWidgetArea代表位置
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
//浮动窗口添加控件
dockWidget->setWidget(new QPushButton("123"));
}
MenuTest::~MenuTest()
{}
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_MenuTest.h"
#include <qdialog.h>
class MenuTest : public QMainWindow
{
Q_OBJECT
public:
MenuTest(QWidget *parent = nullptr);
~MenuTest();
//做成员变量不释放 就不会已完成就退出
// QDialog dlg1;
private:
Ui::MenuTestClass ui;
};
//给动作添加icon和提示
newProjAct = new QAction(QIcon(":/image/newPrj.png"), tr("New Project"), this);
//给动作设置添加状态信息,鼠标悬停就会在状态栏显示
newProjAct->setStatusTip(tr("new a project"));
//工具栏
newProjAct->setToolTip("New Project");
//添加到菜单栏
ui->menuFile->addAction(newProjAct);
//添加到工具栏
ui->mainToolBar->addAction(newProjAct);
更多推荐
所有评论(0)