Qメインウィンドウウィンドウ

メニューバー

ウィンドウの上部に 1 つだけあります

トップレベル メニューの場合、UI ウィンドウを直接ダブルクリックしてテキスト情報を直接入力できます。また、対応するサブメニュー項目を最初にダブルクリックして追加することもできますが、この方法は中国語入力をサポートしていません。
ここに画像の説明を挿入
テキストを入力し、Enter キーを押して確定します。
ここに画像の説明を挿入
セカンダリ メニュー バーを作成する機能
ここに画像の説明を挿入

副メニューで中国語を入力する方法

新しいアクション ( action ) を作成するには
ここに画像の説明を挿入
ここに画像の説明を挿入
:
ここに画像の説明を挿入
新しく作成したアクションを対応するメニュー リストにドラッグします。
ここに画像の説明を挿入
ここに画像の説明を挿入

効果:
ここに画像の説明を挿入

対応するアクションをメニューバーに追加します

ここに画像の説明を挿入

ここに画像の説明を挿入

このうちメニューバーに対応するクラスがQActionで、
ここに画像の説明を挿入
ここに画像の説明を挿入
ユーザーがメニューバー内の特定のQActionをクリックするとトリガーシグナルが発せられます。
ここに画像の説明を挿入

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QMessageBox"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);
    connect(ui->createprogect1,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下创建项目";
                QMessageBox::information(this, "提示框",
                                         "成功创建项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    connect(ui->open_action,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下打开项目";
                QMessageBox::information(this, "提示框",
                                         "成功打开项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });

}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}


ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

QMenu クラスの API メソッドを使用してメニュー項目を追加します

ここに画像の説明を挿入

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QMessageBox"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);

    QAction* a1;
    a1 = ui->menu->addAction("打开老项目");
    connect(a1,&QAction::triggered,this,[=]{
    
    
        qDebug()<<"点击了一下打开项目";
        QMessageBox::information(this, "提示框",
                                 "成功打开老项目",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
    });

    connect(ui->createprogect1,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下创建项目";
                QMessageBox::information(this, "提示框",
                                         "成功创建项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    connect(ui->open_action,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下打开项目";
                QMessageBox::information(this, "提示框",
                                         "成功打开项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

区切り文字も QAction クラスです

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

ツールバー

複数存在することができ、デフォルトで 1 つが提供され、ウィンドウを上下左右にドッキングできます。

ツールバーを追加

ここに画像の説明を挿入
ここに画像の説明を挿入

ステータスバーにコントロールを追加する

前の方法を使用して、QAction コントロールをステータス バーに追加できます。

  1. 新しいアクションを作成し
    ここに画像の説明を挿入
    、そのアクションをツールバーにドラッグします。
    ここに画像の説明を挿入
    ここに画像の説明を挿入
    シグナル関数とスロット関数を追加します。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QMessageBox"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);

    QAction* a1;
    a1 = ui->menu->addAction("打开老项目");
    //菜单栏
    connect(a1,&QAction::triggered,this,[=]{
    
    
        qDebug()<<"点击了一下打开项目";
        QMessageBox::information(this, "提示框",
                                 "成功打开老项目",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
    });

    connect(ui->createprogect1,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下创建项目";
                QMessageBox::information(this, "提示框",
                                         "成功创建项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    connect(ui->open_action,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下打开项目";
                QMessageBox::information(this, "提示框",
                                         "成功打开项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    //工具栏
    connect(ui->action_4,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下工具4";
                QMessageBox::information(this, "提示框",
                                         "点击了一下工具4",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    connect(ui->action_1,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下工具1";
                QMessageBox::information(this, "提示框",
                                         "点击了一下工具1",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}

効果:
ここに画像の説明を挿入
ここに画像の説明を挿入

ツールバーは他のタイプのツールを追加します

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

// 在QMainWindow窗口中添加工具栏
void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar);
void QMainWindow::addToolBar(QToolBar *toolbar);
QToolBar *QMainWindow::addToolBar(const QString &title);

// 将Qt控件放到工具栏中
// 工具栏类: QToolBar
// 添加的对象只要是QWidget或者启子类都可以被添加
QAction *QToolBar::addWidget(QWidget *widget);

// 添加QAction对象
QAction *QToolBar::addAction(const QString &text);
QAction *QToolBar::addAction(const QIcon &icon, const QString &text);

// 添加分隔线
QAction *QToolBar::addSeparator()

ツールバーで、他のコンポーネントを追加し、スロット関数のメソッドを呼び出す信号を送信します。

ツールバーのプロパティ

ここに画像の説明を挿入
QToolBarの継承関係を参照

可動属性値は True (上下左右にドッキング可能)
ここに画像の説明を挿入

ここに画像の説明を挿入

アイコンサイズの設定と表示アイコンまたはテキストの
ここに画像の説明を挿入
設定に対応する機能は以下のとおりです。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

複数のツールバーを追加する

Windows を使用して追加する

ここに画像の説明を挿入
次に、前の QAction を右側のツールバーにドラッグします。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

コードを使用して追加します

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"
#include "QMessageBox"
#include "QLineEdit"
#include "QPushButton"
#include "QLineEdit"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);

    QAction* a1;
    QAction* a2;

    QAction* a4;
   //QPushButton* b1= new QPushButton(this);
   // b1->setText("搜索按钮");
   // QLineEdit* e1 =  new QLineEdit();

    a1 = ui->menu->addAction("打开老项目");
    //给工具栏添加单行输入框
    ui->toolBar->addWidget(new QPushButton("搜索按钮"));
    ui->toolBar->addWidget(new QLineEdit);
    a4 = ui->toolBar->addAction("工具4");


    //菜单栏
    connect(a1,&QAction::triggered,this,[=]{
    
    
        qDebug()<<"点击了一下打开项目";
        QMessageBox::information(this, "提示框",
                                 "成功打开老项目",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
    });

    connect(ui->createprogect1,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下创建项目";
                QMessageBox::information(this, "提示框",
                                         "成功创建项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    connect(ui->open_action,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下打开项目";
                QMessageBox::information(this, "提示框",
                                         "成功打开项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    //工具栏
    connect(ui->action_4,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下工具4";
                QMessageBox::information(this, "提示框",
                                         "点击了一下工具4",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    connect(ui->action_1,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了一下工具1";
                QMessageBox::information(this, "提示框",
                                         "点击了一下工具1",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
//    connect(a2,&QAction::triggered,this,[=]{
    
    
//                qDebug()<<"请输入搜索类容";
//                QMessageBox::information(this, "提示框",
//                                         "请输入搜索类容",
//                                         QMessageBox::Ok,
//                                         QMessageBox::Save);
//            });
//    connect(b1,&QAction::triggered,this,[=]{
    
    
//                qDebug()<<"请输入搜索类容";
//                QMessageBox::information(this, "提示框",
//                                         "请输入搜索类容",
//                                         QMessageBox::Ok,
//                                         QMessageBox::Save);
//            });
    connect(a4,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击了工具4";
                QMessageBox::information(this, "提示框",
                                         "点击了工具4",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });

    //对于toolbar2的操作
    QAction* a5;
    a5 = ui->toolBar_2->addAction("新建项目");
    connect(a5,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击新建项目";
                QMessageBox::information(this, "提示框",
                                         "点击了新建项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    QPushButton *b5 = new QPushButton(this);
    b5->setText("^_^");
    //添加小控件
    ui->toolBar_2->addWidget(b5);
    connect(b5,&QPushButton::clicked,this,[=]{
    
    
        qDebug()<<"点击了^_^";
        QMessageBox::information(this, "提示框",
                                 "点击了^_^",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
    });
    QLineEdit* l5 = new QLineEdit();
    //添加小控件
    ui->toolBar_2->addWidget(l5);
    connect(l5,&QLineEdit::editingFinished,this,[=]{
    
    
        qDebug()<<"完成输入";
        QMessageBox::information(this, "提示框",
                                 "完成了输入",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
    });

    //下方的工具栏
    QToolBar* b6 = new QToolBar(this);
    QMainWindow::addToolBar(Qt::BottomToolBarArea,b6);
    QAction* a6;
    a6 = b6->addAction("新建项目");
    connect(a6,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击新建项目";
                QMessageBox::information(this, "提示框",
                                         "点击了新建项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });



}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}


以下にツールバーを追加し、ツールバーに QAction コンポーネントを追加しました
ここに画像の説明を挿入

下のツールバーで、非 QAction コンポーネントを追加します (QPushButton を使用します)。

    //下方的工具栏
    QToolBar* b6 = new QToolBar(this);
    QMainWindow::addToolBar(Qt::BottomToolBarArea,b6);
    QAction* a6;
    a6 = b6->addAction("新建项目");
    connect(a6,&QAction::triggered,this,[=]{
    
    
                qDebug()<<"点击新建项目";
                QMessageBox::information(this, "提示框",
                                         "点击了新建项目",
                                         QMessageBox::Ok,
                                         QMessageBox::Save);
            });
    QPushButton *pb6 = new QPushButton(this);
    pb6->setText("退出");
    //添加小控件
    b6->addWidget(pb6);
    connect(pb6,&QPushButton::clicked,this,[=]{
    
    
        qDebug()<<"点击了退出";
        QMessageBox::information(this, "提示框",
                                 "点击了退出",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
    });

ここに画像の説明を挿入

ステータスバー

ウィンドウの下部に 1 つだけあります

ステータス バーにいくつかのコントロールを追加し、いくつかのプロパティを表示する必要があります。最もよく使用されるのは、ラベル QLabel を追加することです。

共通API

// 类型: QStatusBar
void QStatusBar::addWidget(QWidget *widget, int stretch = 0);

[slot] void QStatusBar::clearMessage();
[slot] void QStatusBar::showMessage(const QString &message, int timeout = 0);

ここに画像の説明を挿入
ここに画像の説明を挿入

ステータス バーが表示されます。右側の三角形が灰色の点線で表示されます。

ここに画像の説明を挿入

QLabelをステータスバーに追加し、ジャンプパスを設定します

    //状态栏
    QLabel* l7 = new QLabel();
    l7->setText(QStringLiteral("<a style='color: red; text-decoration: none ;font-size:20px' href = https://www.baidu.com><u>百度</u>"));
    ui->statusBar->addWidget(l7);
    connect(l7,&QLabel::linkActivated,this,[=](QString url){
    
    
        qDebug()<<"点击了状态栏label";
        QMessageBox::information(this, "提示框",
                                 "点击了状态栏label",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
        QDesktopServices::openUrl(QUrl(url));
    });

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

Qラベルハイパーリンク

別の押しボタン ボタンを追加する

    //状态栏
    QLabel* l7 = new QLabel();
    l7->setText(QStringLiteral("<a style='color: red; text-decoration: none ;font-size:20px' href = https://www.baidu.com><u>百度</u>"));
    ui->statusBar->addWidget(l7);
    connect(l7,&QLabel::linkActivated,this,[=](QString url){
    
    
        qDebug()<<"点击了状态栏label";
        QMessageBox::information(this, "提示框",
                                 "点击了状态栏label",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
        QDesktopServices::openUrl(QUrl(url));
    });
    // 再添加按钮
    QPushButton* button = new QPushButton("状态栏的按钮");
    ui->statusBar->addWidget(button);
    connect(button,&QPushButton::clicked,this,[=](){
    
    
        qDebug()<<"点击了状态栏label";
        QMessageBox::information(this, "提示框",
                                 "点击了状态栏pushbutton",
                                 QMessageBox::Ok,
                                 QMessageBox::Save);
    });

ここに画像の説明を挿入
ここに画像の説明を挿入

ステータスバーへの情報の表示と表示情報のクリア

void MainWindow::on_pushButton_2_clicked()
{
    
    
    //在状态栏显示信息
    connect(ui->pushButton_2,&QPushButton::clicked,this,[=]{
    
    
        ui->statusBar->showMessage("在状态栏显示的信息------------",0);
    });

}

void MainWindow::on_pushButton_clicked()
{
    
    
    //清空状态栏清空显示的信息
    connect(ui->pushButton,&QPushButton::clicked,this,[=]{
    
    
        ui->statusBar->clearMessage();
    });
}

ここに画像の説明を挿入
表示情報
ここに画像の説明を挿入

明確な情報
ここに画像の説明を挿入

プロジェクト開発において、チャンピオンバーの表示情報をステータスバーコントロールと併用することは推奨されません(カバレッジの問題があります)

ドッキングウィンドウ(ドッキングウィジェット)

デフォルトでは提供されていませんが、複数存在することができます。ウィンドウは上下左右にドッキングできます。

ドッキング ウィンドウは、マウスをドラッグすることでウィンドウの上下左右にドッキングするか、ウィンドウの上にフローティングすることができます。

ドッキングされたウィンドウが非 QMainWindow タイプのウィンドウに追加された場合、このウィンドウは移動したりフローティングしたりすることはできません。

フローティング ウィンドウはツールバーにあり、UI インターフェイスにドラッグするだけです。

使いやすい

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

プロパティパネル

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入
プロパティパネルまたは関数を使用して変更できます。

コントロールを追加する

ドラッグアンドドロップしてください
ここに画像の説明を挿入

それから情報窓口に電話してください

void MainWindow::on_pushButton_3_clicked()
{
    
    
    connect(ui->pushButton_3,&QPushButton::clicked,this,[=]{
    
    
        QMessageBox::critical(ui->dockWidget, "标题", "内容", QMessageBox::Apply, QMessageBox::Reset);
        qDebug()<<"点击了一下";
    });
}

ここに画像の説明を挿入
ここに画像の説明を挿入

既存の問題

1 回目のクリック: プロンプト ボックスは表示されません
2 回目のクリック:
ここに画像の説明を挿入
ここに画像の説明を挿入
3 回目のクリック:

ここに画像の説明を挿入
ここに画像の説明を挿入
二度呼ばれた

4 回目のクリック:
ここに画像の説明を挿入
3 回呼び出されます。

解決

クリック コントロールのスロット関数でメッセージボックスを直接呼び出すだけで、再度接続する必要はありません。

void MainWindow::on_pushButton_3_clicked()
{
    
    
    qDebug()<<"点击了一下";
//    connect(ui->pushButton_3,&QPushButton::clicked,this,[=]{
    
    
//        //QMessageBox::critical(ui->dockWidget, "标题", "内容", QMessageBox::Apply, QMessageBox::Reset);
//        QMessageBox::information(this, "提示框",
//                                 "点击了^_^",
//                                 QMessageBox::Ok,
//                                 QMessageBox::Save);
//        qDebug()<<"调用了一次message";
//    });
    QMessageBox::information(this, "提示框",
                             "点击了一下浮动窗口中的控件",
                             QMessageBox::Ok,
                             QMessageBox::Save);
}

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41701723/article/details/132212870