Um tutorial minimalista para começar a usar o Qt (2)

"QMainWindow_Menu Bar and Toolbar"

QMainWindow: barra de menu, várias barras de ferramentas, vários componentes de rebitagem (widgets de encaixe de janela flutuante), widget central, barra de status.

Barra de menu

Só pode haver uma barra de menu

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

 ToolBar ToolBar

Pode haver várias barras de ferramentas

    // 创建工具栏,系统没有提供对应的方法
    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, Riveting Parts, Core Parts"

Barra de status

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

Widget rebitado (janela flutuante) QDockWidget

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

Componentes do núcleo

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

"Adição de arquivos 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"));

"Criação de caixa de diálogo modal e não modal"

Exec de diálogo modal

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

 Mostrar diálogo não modal

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

"Caixa de diálogo de mensagem da caixa de diálogo padrão"

PS: O sistema nos fornece muitas caixas de diálogo escritas, que podemos usar diretamente.

QMessageBox para membros públicos estáticos:

  1. erro crítico
  2. em formação
  3. pergunta
  4. aviso
        //标准对话框:错误对话框、消息对话框
//        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()<<"选择取消";
        }

"Selecione a caixa de diálogo de arquivo da caixa de diálogo padrão"

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

"Layout da janela de login"

1. Implemente a janela de login


2. Use o método de layout para embelezar a janela
3. Use widgets para layout, layout horizontal, layout vertical e layout de grade.
4. Dê o nome de usuário, senha, login e botões de logout para o layout geral.
5. Existem 9 pixels entre a janela padrão e o controle, e o layoutLeftMargin pode ser ajustado.
6. Use molas para o layout.
7. O a altura do widget da janela é muito alta e o atributo sizepolicy pode ser ajustado como Fixo, você pode se adaptar ao tamanho dos controles dentro do widget

"Grupo de botões de controle"

  1. Botões QPushButton usados ​​com frequência
  2. Botão da ferramenta QToolButton, usado para exibir imagens. Se você deseja exibir o texto, modifique o estilo: toolButtonStyle. AutoRaise de estilo protuberante
  3. radioButton botão de opção, defina o padrão ui-> setCheck (true);
  4. CheckBox botão de seleção múltipla para monitorar o status. 2 selecionados 1 metade selecionados 0 não selecionados.

"Controle QListWidget"


Contêiner de lista QListWidget

  1. QListWidgetItem uma linha de conteúdo

"QTableWidget Control"

  1. StackedWidget
  2. TabWidget
  3. Caixa suspensa combox
  4. Caixa de edição de linha única linha Editar
  5. TextEdit (cor da fonte editável, formato)
  6. PlainTextEdit ( cor da fonte não editável, formato )
  7. Slider
  8. Rótulo

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

 

Acho que você gosta

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