QT学习笔记3(QMainWindow类,QDiaglog类)

若到江南赶上春,千万和春住。


QMainWindow 继承自 QWidget 类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、多个浮动窗口(铆接部件)(dockwidgets)、一个状态栏(statusbar)和一个中心部件(centralwidget)。

​
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QLabel>
#include <QStatusBar>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    resize(400,600);
    QMenuBar *bar1=menuBar();   //创建一个菜单条(菜单条只能有一个(set)),默认new创建,菜单条默认依赖父对象MainWindow,不要出现与函数同名的对象名
    setMenuBar(bar1);//将菜单条放到窗口中

    QMenu *fileMenu=bar1->addMenu("文件");//在菜单条下创建菜单
    QMenu *editorMenu=bar1->addMenu("编辑");
    QMenu *viewMenu=bar1->addMenu("视图");
    QMenu *buildMenu=bar1->addMenu("构建");

    QAction *newFile=fileMenu->addAction("新建");//为文件菜单添加菜单项,创建一个QAction指针接收它,QACtion类在那个头文件中?
    fileMenu->addSeparator();//添加分割线
    fileMenu->addMenu("打开");

    QToolBar *tool1=new QToolBar(this);//创建工具栏,工具栏可以有多个(add)
    addToolBar(Qt::LeftToolBarArea,tool1);//将工具栏添加到窗口,默认左停靠

    tool1->addAction("欢迎");//在工具栏中设置内容
    tool1->addSeparator();
    tool1->addAction(newFile);//通过Action指针将新建菜单项提那件到工具栏

    tool1->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);//设置工具栏允许停靠的的区域,至于允许左右停靠
    tool1->setFloatable(false);//不允许工具栏浮动
    tool1->setMovable(false);//不允许工具栏移动

    QPushButton *btn=new QPushButton("退出");
    tool1->addWidget(btn);//添加控件到工具栏

    QStatusBar *sBar = statusBar();//创建状态栏,状态栏只有一个
    setStatusBar(sBar);//设置状态栏到窗口

    QLabel *label1 =new QLabel("输入以定位");
    sBar->addWidget(label1);//添加标签到状态栏左侧

    QPushButton *btn2 = new QPushButton("应用程序输出",this);
    sBar->addPermanentWidget(btn2);//添加按钮到状态栏右侧

    QDockWidget *dW = new QDockWidget("浮动",this);//创建铆接部件
    addDockWidget(Qt::TopDockWidgetArea,dW);//添加铆接部件,并设置默认停靠位置为核心部件上方

    QTextEdit *testEd = new QTextEdit;//创建文本编辑器
    setCentralWidget(testEd);//设置文本编辑器为中心部件

}

MainWindow::~MainWindow()
{
    delete ui;
}

​

资源文件

1.将资源文件拷贝到项目目录下

2.右键项目文件名->添加新文件->Qt->Qt resource File->命名

3.点击资源名 open in editor 编辑资源

4.点击添加前缀,然后添加资源文件

使用

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);//已经提前在ui文件的工具栏中添加newaction和openaction
    ui->actionopen->setIcon(QIcon("D:/QTprogram/D0829/2.jpg"));//绝对路径添加QT资源
    ui->actionnew->setIcon(QIcon(":/1.jpg"));//需要将资源放置在项目目录下
}

MainWindow::~MainWindow()
{
    delete ui;
}

对话框

在ui文件中添加了actionnew部件

mainwindow.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QMessageBox>
#include <QDebug>
#include <QColorDialog>
#include <QFileDialog>
#include <QFontDialog>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //模态创建 阻塞
    connect(ui->actionnew,&QAction::triggered,[=](){
        // QDialog dlog1(this);
        // dlog1.resize(200,100);
        // dlog1.exec();//模态对话框(不可对其他窗口进行操作)

        // QDialog *dlog1= new QDialog(this);
        // dlog1->resize(300,200);
        // dlog1->show();//非模态对话框
        // dlog1->setAttribute(Qt::WA_DeleteOnClose);//对话框结束之后,清理堆区对话框数据

        // if( QMessageBox::Yes==QMessageBox::critical(this,"错误","确定",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes))
        //     {
        //     qDebug()<<"选择的Yes";
        // }//错误对话框,参数1 父对象;参数2 对话框标题;参数3 提示内容;参数4 按键类型;参数5 默认按键
        // else {
        //     qDebug()<<"选择的是No";
        // }//QMessageBox::critical返回值是QMessageBox::StandardButton类型,可以与参数QMessageBox::Yes(QMessageBox::StandardButton类型)作比较。以判断点击的按钮


        // QMessageBox::question(this,"问题","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Save);//问题对话框,question小写

        //QMessageBox::warning(this,"Warnning","警告");//警告对话框

        //QMessageBox::information(this,"information","信息");//信息对话框

        // QColor color = QColorDialog::getColor(QColor(255,0,0));//颜色对话框
        // qDebug()<<color.red()<<color.green()<<color.black();

        //QFileDialog::getOpenFileName(this,"文件目录","C:\\Users\\10656\\Desktop","(*.txt)");//文件对话框,参数3 路径加双斜杠 ;参数4 过滤txt文件格式

        // bool ok;
        // QFont font=QFontDialog::getFont(&ok,QFont("Times",15),this);//字体对话框。
        // qDebug()<<"字体"<<font.family()<<"字号"<<font.pointSize()<<"是否加粗"<<font.bold();
    });


}

MainWindow::~MainWindow()
{
    delete ui;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值