Un tutorial minimalista para comenzar con Qt (2)

"Barra de herramientas y barra de QMainWindow_Menu"

QMainWindow: barra de menú, múltiples barras de herramientas, múltiples componentes de remachado (widgets de muelle de ventana flotante), widget central, barra de estado.

Barra de menús

Solo puede haber una barra de menú

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

 ToolBar ToolBar

Puede haber varias barras de herramientas

    // 创建工具栏,系统没有提供对应的方法
    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_Status Bar, piezas de remachado, piezas principales"

Barra de estado

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

Widget remachado (ventana flotante) QDockWidget

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

Componentes principales

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

"Adición de archivos de recursos"

    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"));

"Creación de cuadros de diálogo modal y no modal"

Ejecutiva de diálogo modal

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

 Mostrar diálogo no modal

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

"Cuadro de diálogo de mensaje del cuadro de diálogo estándar"

PD: El sistema nos proporciona muchos cuadros de diálogo escritos, que podemos usar directamente.

QMessageBox 的 Miembros públicos estáticos:

  1. error crítico
  2. información
  3. pregunta
  4. advertencia
        //标准对话框:错误对话框、消息对话框
//        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()<<"选择取消";
        }

"Seleccionar cuadro de diálogo de archivo del cuadro de diálogo estándar"

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

"Diseño de la ventana de inicio de sesión"

1. Implementar la ventana de inicio de sesión


2. Utilice el método de diseño para embellecer la ventana.
3. Utilice widgets para diseño, diseño horizontal, diseño vertical y diseño de cuadrícula.
4. Proporcione los botones de nombre de usuario, contraseña, inicio de sesión y cierre de sesión para el diseño general.
5. Hay 9 píxeles entre la ventana predeterminada y el control, y el layoutLeftMargin se puede ajustar.
6. Utilice resortes para el diseño.
7. El la altura del widget de ventana es demasiado alta y el atributo sizepolicy se puede ajustar como fijo, puede adaptarse al tamaño de los controles dentro del widget

"Grupo de botones de control"

  1. QPushButton botones de uso frecuente
  2. Botón de herramienta QToolButton, utilizado para mostrar imágenes. Si desea mostrar texto, modifique el estilo: toolButtonStyle. AutoRaise de estilo sobresaliente
  3. botón de radio radioButton, establece el valor predeterminado ui-> setCheck (true);
  4. CheckBox botón de selección múltiple para monitorear el estado. 2 seleccionados 1 mitad seleccionados 0 no seleccionados.

"Control de QListWidget"


Contenedor de lista QListWidget

  1. QListWidgetItem una línea de contenido

"Control de QTableWidget"

  1. StackedWidget
  2. TabWidget
  3. Cuadro combinado de cuadro desplegable
  4. Línea de cuadro de edición de una sola línea Editar
  5. TextEdit (color de fuente editable, formato)
  6. PlainTextEdit ( color de fuente no editable, formato )
  7. Deslizador
  8. Etiqueta

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();
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44937328/article/details/114282064
Recomendado
Clasificación