【QT学习】4.对话框学习,浮动窗口,模态对话框,非模态对话框,消息框,文件对话框

1.浮动窗口

代码:

    //制作核心控件:文本编辑框
    QTextEdit* pTextEdit=new QTextEdit;
    //制作浮动控件
    connect(pMenu1,&QMenu::triggered,
            [=](QAction* pAction){
            qDebug()<<pAction->text()<<endl;
            if(pAction->text()=="浮动控件"){
                QDockWidget* pDockWidget=new QDockWidget;
                QTextEdit* pTextEdit2=new QTextEdit;
                pDockWidget->setWidget(pTextEdit2);
                //添加浮动控件
                this->addDockWidget(Qt::RightDockWidgetArea,pDockWidget);
            }else if(pAction->text()=="核心控件"){
                this->setCentralWidget(pTextEdit);
            }
         }
     );

QTextEdit为文本编辑框

QDockWidget为浮动控件,其中放置了一个QTextEdit文本编辑框

2.模态对话框,非模态对话框,消息框,文件对话框

1.模态对话框:必须处理对话框才可以切换回主界面。

2.非模态对话框:与上相反

3.消息框:也是模态对话框

4.文件对话框:弹出找文件

#include "mainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QDebug>
#include <QDialog>
#include <QMessageBox>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //创建窗口,交互按键
    setWindowTitle("对话框学习");
    resize(400,400);

    QMenuBar* pMenuBar=menuBar();
    QMenu* pMenu=new QMenu();
    pMenu->setTitle("对话框");
    pMenuBar->addMenu(pMenu);

    QAction* pAction1=new QAction;
    pAction1->setText("模态对话框");
    QAction* pAction2=new QAction;
    pAction2->setText("非模态对话框");
    QAction* pAction3=new QAction;
    pAction3->setText("消息框");
    QAction* pAction4=new QAction;
    pAction4->setText("文件对话框");

    pMenu->addAction(pAction1);
    pMenu->addAction(pAction2);
    pMenu->addAction(pAction3);
    pMenu->addAction(pAction4);

    //实现,模态对话框,非模态对话框,消息框,文件对话框
    connect(pMenu,&QMenu::triggered,
            [=](QAction* action){
            if(action->text()=="模态对话框"){
                qDebug()<<"模态对话框"<<endl;
                QDialog* pDialog=new QDialog;
                pDialog->setWindowTitle("模态对话框");
                pDialog->exec();//**堵塞就是模态对话框**
            }

            if(action->text()=="非模态对话框"){
                qDebug()<<"非模态对话框"<<endl;
                QDialog* pDialog=new QDialog;
                pDialog->setWindowTitle("非模态对话框");
                pDialog->show();//**不堵塞就是非模态对话框**
            }

            if(action->text()=="消息框"){
                qDebug()<<"消息框"<<endl;
                int r=QMessageBox::question(this,"提问","喜不喜欢我");
                if(r==QMessageBox::Yes){
                    qDebug()<<"好的"<<endl;
                }else{
                    qDebug()<<"跪CPU"<<endl;
                }
            }

            if(action->text()=="文件对话框"){
                qDebug()<<"文件对话框"<<endl;
                QString str=QFileDialog::getOpenFileName(this,"找文件",
                                                         "source(*.cpp *.c);;"
                                                         "head(*.h);;"
                                                         "tex(*.txt);;"
                                                         "all(*.*)"
                                                         );
                qDebug()<<str<<endl;
            }
    });
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值