• QT学习笔记(day02)


    QMainWindow

    1. 菜单栏 (有且只能有一个)
    	QMenuBar *bar = menuBar();
    	setMenuBar(bar);
    	// 创建菜单
        QMenu *fileMenu = bar->addMenu("文件");
        QMenu *editMenu = bar->addMenu("编辑");
    
        // 创建菜单项
        QAction *newAction = fileMenu->addAction("新建");
        fileMenu->addSeparator();    // 添加分割线
        QAction *openAction = fileMenu->addAction("打开");
    
    1. 工具栏 (可以有多个)
    	QToolBar *toolBar = new QToolBar();
        addToolBar(Qt::LeftToolBarArea,toolBar);
    
        // 设置只允许左右停靠
        toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    
        // 设置浮动
        toolBar->setFloatable(false);
    
        // 设置移动(总开关)
        toolBar->setMovable(false);
    
        // 工具栏添加小部件
        toolBar->addAction(newAction);
        toolBar->addSeparator();    // 添加分割线
        toolBar->addAction(openAction);
    
    
    1. 状态栏 (只能有一个)
    	QStatusBar *staBar = statusBar();
        setStatusBar(staBar);
    
        QLabel *label1 = new QLabel("左侧提示信息",this);
        staBar->addWidget(label1);
    
        QLabel *label2 = new QLabel("右侧提示信息",this);
        staBar->addPermanentWidget(label2);
    
    1. 铆接部件(即浮动窗口) (可以有多个)
    	QDockWidget *dock = new QDockWidget("浮动窗口",this);
        addDockWidget(Qt::TopDockWidgetArea,dock);
    
        // 只允许左右停靠
        dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
    
    1. 核心部件 (只能有一个)
    	QTextEdit *edit = new QTextEdit(this);
        setCentralWidget(edit);
    

    tips: 1. 添加这些控件的方法使用set为前缀的,基本上都只能创建一个,而使用add为前缀的基本上都可以创建多个。2. new出来的空间要记得添加this参数,将创建在堆区的控件绑定到QT对象树上,便于堆区内存释放。

    QT添加资源文件

    如需要在工具栏各个属性旁添加图标时,需要添加一些资源文件。

    资源文件添加步骤:

    1. 首先将资源文件夹复制到项目目录下。

    2. 在QTCreater中右击项目->添加新文件->Qt->Qt Rescourse File

    3. 给添加的资源文件起名 xxx,之后会在项目下生成一个xxx.qrc文件

    4. 打开xxx.qrc文件,添加前缀,添加资源文件

    资源文件使用:

    : + 前缀名 + 文件名

    	// 给文件添加小图标
        // 资源文件添加 语法: ": + 前缀名 + 文件名称"
        ui->actionnew->setIcon(QIcon(":/Image/Luffy.png"));
        ui->actionopen->setIcon(QIcon(":/Image/LuffyQ.png"));
    

    QT对话框(QTDialog)

    分类:模态对话框 非模态对话框
    模态对话框: 不可以对其它窗口进行操作
    非模态对话框: 可以对其它窗口进行操作

    通过信号和槽来实现当点击工具栏中的新建,创建对话框

    	// 点击新建,创建对话框
        connect(ui->actionNew,&QAction::triggered,this,[=](){
            // 模态对话框创建
            QDialog dlg(this);
            dlg.resize(220,90);
            dlg.exec(); // 设置阻塞,让对话框等待用户操作
        });
    
    	// 点击新建,创建对话框
        connect(ui->actionNew,&QAction::triggered,this,[=](){
            // 非模态对话框创建
           QDialog *dlg2 = new QDialog(this);
           dlg2->resize(220,90);
            dlg2->show();
            // 设置 55号属性
            dlg2->setAttribute(Qt::WA_DeleteOnClose);
        });
    

    tips: 非模态对话框的显示使用的是show()方法,当非模态对话框使用非new创建在栈区,由于这里创建使用的是lambda表达式,离开作用域对话框会很快消失,因此使用new创建在堆区;但是对话框的内存需要等待MainWindow关闭后才能得到释放,如果在多次打开关闭对话框后可能因内存未及时释放产生内存泄露,因此设置55号属性,及时释放内存。

  • 相关阅读:
    YARN 多租户资源池配置
    HDFS NameNode HA 部署文档
    MySQL 触发器示例
    Apache ZooKeeper 单机、集群部署文档
    Apache Flume 安装文档、日志收集
    IBM X3650 M4 主板故障
    Apache Hive 安装文档
    Apache Hadoop 集群安装文档
    Cloudera Manger CDH 安装文档
    VMware 克隆网卡无法启动
  • 原文地址:https://www.cnblogs.com/HaroldC/p/13410114.html
Copyright © 2020-2023  润新知