QT - 坐标系统,菜单栏,状态栏,对话框

 1.坐标体系

以左上角为原点,X向右增加,Y向下增加

D:\QT\QTcode\day01\4_源代码\04_QtZuobiao

mywidget.cpp:

#include "mywidget.h"
#include <QPushButton>
#include "mybutton.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    /* 对于父窗口(主窗口),坐标系统相对于屏幕
     * 原点:相对于屏幕左上角
     * x: 往右递增
     * y: 往下递增
    */
    move(100, 100);


    /* 子窗口,坐标系统相对于父窗口
     * 原点:相对于窗口空白区域左上角(不包括边框)
     * x: 往右递增
     * y: 往下递增
    */
    QPushButton *b1 = new QPushButton(this);
    b1->move(100, 100);
    b1->setText("^_^");
    b1->resize(200, 100);

    QPushButton *b2 = new QPushButton(b1);

    b2->move(10, 10);
    b2->setText("@_@");


    MyButton *b3 = new MyButton(this);
    b3->setText("123");

    //1)指定父对象后  2)直接或间接继承于QObject
    //子对象如果是动态分配空间的new,不需要手动释放delete
    //系统会自动释放

}

MyWidget::~MyWidget()
{

}

mybutton.cpp

#include "mybutton.h"
#include <QDebug>

MyButton::MyButton(QWidget *parent) : QPushButton(parent)
{

}

MyButton::~MyButton()
{
    qDebug() << "按钮被析构";
}

 

2.新建菜单栏 ,状态栏

#include "mainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QDebug>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //菜单栏
    QMenuBar *mBar = menuBar();

    //添加菜单
    QMenu *pFile = mBar->addMenu("文件");

    //添加菜单项,添加动作
    QAction *pNew = pFile->addAction("新建");

    connect(pNew, &QAction::triggered,

            [=]()
            {
                qDebug() << "新建被按下";
            }

            );
    pFile->addSeparator(); //添加分割线·
    QAction *pOpen = pFile->addAction("打开");

    //工具栏,菜单项的快捷方式
    QToolBar *toolBar = addToolBar("toolBar");

    //工具栏添加快捷键
    toolBar->addAction(pNew);

    QPushButton *b = new QPushButton(this);
    b->setText("^_^");
    //添加小控件
    toolBar->addWidget(b);

    connect(b, &QPushButton::clicked,
            [=]()
            {
                b->setText("123");
            }
            );

    //状态栏
    QStatusBar *sBar = statusBar();
    QLabel *label = new QLabel(this);
    label->setText("Normal text file");
    sBar->addWidget(label);
    //addWidget 从左往右添加
    sBar->addWidget(new QLabel("2", this));

    // addPermanentWidget 从右往左添加
    sBar->addPermanentWidget(new QLabel("3", this));

    //核心控件
    QTextEdit *textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);

    //浮动窗口
    QDockWidget *dock = new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea, dock);

    //给浮动窗口添加控件
    QTextEdit *textEdit1 = new QTextEdit(this);
    dock->setWidget(textEdit1);
}

MainWindow::~MainWindow()
{

}

添加菜单文件,和添加菜单栏新建

在菜单栏新建和打开之间添加分隔符

 添加工具栏,菜单项的快捷方式 

 添加小空间^_^  

 按下^_^会出现123

添加状态栏,2从左往右添加,3从右往左添加。

 

 添加核心控件,我们就可以往文本中添加内容了

添加浮动窗口

 

3.模态与非模态对话框

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>
#include <QDebug>
#include <QMessageBox>
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    QMenuBar *mBar = menuBar();
    setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("对话框");
    QAction *p1 = menu->addAction("模态对话框");
    connect(p1, &QAction::triggered,
            [=]()
            {
                QDialog dlg;
                dlg.exec();
                qDebug() << "111111";
            }

            );

    QAction *p2 = menu->addAction("非模态对话框");
    connect(p2, &QAction::triggered,
            [=]()
            {

//                dlg.show();
//                qDebug() << "111111";


//                QDialog *p = new QDialog(this);
//                p->show();

                 QDialog *p = new QDialog;
                 p->setAttribute(Qt::WA_DeleteOnClose);
                 p->show();
            }

            );

    QAction *p3 = menu->addAction("关于对话框");
    connect(p3, &QAction::triggered,
            [=]()
            {
               QMessageBox::about(this, "about", "关于qt");
            }

            );

    QAction *p4 = menu->addAction("问题对话框");
    connect(p4, &QAction::triggered,
            [=]()
            {
               int ret = QMessageBox::question(this,
                           "question", "Are you ok?",
                              QMessageBox::Ok |
                                QMessageBox::Cancel

                                               );
                switch(ret)
                {
                case QMessageBox::Ok:
                    qDebug() << "i am ok";
                    break;
                case QMessageBox::Cancel:
                    qDebug() << "i am bad";
                    break;
                default:
                    break;
                }
            }

            );


    QAction *p5 = menu->addAction("文件对话框");
    connect(p5, &QAction::triggered,
            [=]()
            {
               QString path = QFileDialog::getOpenFileName(
                           this,
                           "open",
                           "../",
             "souce(*.cpp *.h);;Text(*.txt);;all(*.*)"
                           );
               qDebug() << path;
            }

            );


}

MainWindow::~MainWindow()
{

}

 摸态对话框后面的对话框是隐藏的,点击不了

 模态对话框第一个×掉后,第二个也随着消失,非模态对话框第一个×掉后,第二个也要跟着×掉。

关于对话框 

问题对话框选择OK显示i am ok,选择Cancel显示i am bad。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式_笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值