Qt入门极简教程(二)

《QMainWindow_菜单栏和工具栏》

QMainWindow:菜单栏(menu bar)、多个工具栏(tool bars)、多个铆接部件(浮动窗口dock widgets)、中心部件(central widget)、状态栏(status bar)。

菜单栏MenuBar

菜单栏只能有一个

    // 创建菜单栏MenuBar,使用系统提供的方法
    QMenuBar *bar = menuBar();
    // 将菜单栏放入窗口中
    setMenuBar(bar);
    // 创建菜单Menu
    QMenu *fileMenu = bar->addMenu("文件");
    QMenu *editMenu = bar->addMenu("编辑");
    // 创建菜单项Action
    fileMenu->addAction("新建");
    fileMenu->addSeparator();
    fileMenu->addAction("打开");

 工具栏ToolBar

工具栏可以有多个

    // 创建工具栏,系统没有提供对应的方法
    QToolBar *toolBar = new QToolBar(this);
    // 将工具栏放入窗口中
    // addToolBar(Qt::LeftToolBarArea, toolBar);
    addToolBar(toolBar);
    // 设置浮动属性
    // toolBar->setFloatable(false);
    // 设置移动属性
    // toolBar->setMovable(true);
    // 工具栏中可以设置内容
    toolBar->addAction("新建");
    toolBar->addSeparator();
    toolBar->addAction("打开");
    // 工具栏中添加一些控件
    QPushButton *btn = new QPushButton("aaa", this);
    toolBar->addWidget(btn); // QPushButton父类的父类是QWidget

《QMainWindow_状态栏、铆接部件、核心部件》

状态栏StatusBar

    // z状态栏只有一个
    QStatusBar *stBar = statusBar();
    // 将statusBar设置到窗口中
    setStatusBar(stBar);
    // 放置标签控件
    QLabel *label = new QLabel("提示的信息", this);
    stBar->addWidget(label);

铆接部件(浮动窗口)QDockWidget

    // 铆接部件 (浮动窗口)
    QDockWidget *docWidget = new QDockWidget("浮动", this);
    addDockWidget(Qt::BottomDockWidgetArea, docWidget); // (add可以add多个)
    //设置铆接部件后期的可停靠范围
    docWidget->setAllowedAreas(Qt::TopDockWidgetArea| Qt::BottomDockWidgetArea);

核心部件

    //----------------------------------------
    // 设置中心部件(eg:记事本)
    QTextEdit *edit = new QTextEdit(this);
    setCentralWidget(edit); //中心部件只能有一个,所以需要用内置的set函数(set只能set一个)

《资源文件的添加》

    ui->setupUi(this);
    ui->actionNew->setIcon(QIcon("/home/clf/Downloads/lufei2.jpeg"));
    // 使用添加Qt的资源 ": + 前缀名 + 文件名"
    // 1. 把所有的图片及资源放入源码目录下
    // 2. 右击项目->添加新文件->Qt->Resoure File->资源文件取名res->确定即可生成res.qrc文件
    ui->actionNew->setIcon(QIcon(":/lufei/Image/lufei1.jpeg"));

《模态和非模态对话框创建》

模态对话框exec

       // 对话框 分类
       // 模态对话框(不可以对其他的窗口进行操作,有阻塞功能)、非模态对话框
       // 模态创建
        QDialog dlg(this);
        dlg.resize(200, 100); //模态对话框太小的话,会提示一些警告,所以geometry设置大一些
        dlg.exec(); //模态对话框(阻塞功能)
        qDebug()<<"模态对话框弹出了";

 非模态对话框show

// 非模态对话框
// QDialog dlg2(this);// 非模态对话框(因为dlg2是创建在堆上的,所以会一闪而过)
 QDialog * dlg2 = new QDialog(this);
 dlg2->resize(200, 100);
 dlg2->show();
 dlg2->setAttribute(Qt::WA_DeleteOnClose); // 防止关闭非模态对话框的时候,内存没法释放的
 qDebug()<<"非模态对话框弹出了";

《标准对话框之消息对话框》

PS:系统为我们提供了很多写好了的对话框,我们可以直接用。

QMessageBox的static public Members:

  1. critical 错误
  2. information 信息
  3. question 提问
  4. warning 警告
        //标准对话框:错误对话框、消息对话框
//        QMessageBox::critical(this, "critical","错误");
//        QMessageBox::information(this,"info","信息");
        // 提问对话框
        QMessageBox::question(this, "ques", "提问");
        // 参1:父亲 参2:标题 参3:提示内容 参4:按键类型 参5:默认关联回车按键
        if(QMessageBox::Save = QMessageBox::question(this, "ques", "提问",
           QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel)) {
            qDebug()<<"选择保存";
        }
        else {
            qDebug()<<"选择取消";
        }

《标准对话框之选择文件对话框》

// 文件对话框
// 参1:父亲 参2:标题 参3:默认打开路径 参4:过滤文件格式
   QString strPath= QFileDialog::getOpenFileName(this, "打开","/home/clf/", "(*).txt");
   qDebug()<<strPath;

《登录窗口布局》

1. 实现登录窗口


2. 利用布局的方式,给窗口进行美化
3. 选用widget进行布局,水平布局、垂直布局、栅格布局。
4. 给用户名、密码、登录、退出按钮进行总体布局
5. 默认窗口和控件之间有9间隙像素,可调整layoutLeftMargin
6. 利用弹簧进行布局
7. 窗口widget高度太高,可以调整sizepolicy属性为Fixed,即可自适应widget内部的控件大小

《控件-按钮组》

  1. QPushButton 常用按钮
  2. QToolButton 工具按钮,用于显示图片。如果想显示文字,修改风格:toolButtonStyle。突起风格 autoRaise
  3. radioButton 单选按钮,设置默认 ui->setCheck(true);
  4. checkBox 多选按钮, 监听状态。2选中 1半选 0未选。

《QListWidget控件》


QListWidget 列表容器

  1. QListWidgetItem 一行内容

《QTableWidget控件》

  1. 栈控件stackedWidget
  2. 页签控件 TabWidget
  3. 下拉框 combox
  4. 单行编辑框 line Edit
  5. 文本编辑框 TextEdit (可编辑字体颜色,格式)
  6. 纯文本编辑框 PlainTextEdit(不可编辑字体颜色,格式
  7. 滑动条
  8. 标签 Label

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 栈控件的使用
    // 设置默认定位
    ui->stackedWidget->setCurrentIndex(1);
    // 按钮关联栈控件
    connect(ui->btn_ScrollArea, &QPushButton::clicked, [=](){
       ui->stackedWidget->setCurrentIndex(0);
    });
    connect(ui->btn_TabWidget, &QPushButton::clicked, [=](){
       ui->stackedWidget->setCurrentIndex(1);
    });

    // 下拉框comBox
    ui->comboBox->addItem("奔驰");
    ui->comboBox->addItem("宝马");
    ui->comboBox->addItem("拖拉机");
    // 点击按钮,选中拖拉机选项
    connect(ui->btn_select, &QPushButton::clicked, [=](){
        // ui->comboBox->setCurrentIndex(2);
        ui->comboBox->setCurrentText("拖拉机");
    });

    // 利用QLabel显示图片 在Qt中的图片资源都叫Pixmap
    ui->lbl_Image->setPixmap(QPixmap(":/Image/lufei1.jpeg"));
    // 利用QLabel显示动图 仅限于gif的图片
    QMovie * movie = new QMovie(":/Image/maliao.gif");
    // 动图需要启动播放的动作
    ui->lbl_Movie->setMovie(movie);
    movie->start();
}

猜你喜欢

转载自blog.csdn.net/weixin_44937328/article/details/114282064
今日推荐