【5日間】エントリーから実戦までのQt:2日目

初日

https://blog.csdn.net/qq_40507857/article/details/125730739

次の日

2.1 メニューバーのあるウィンドウ

QMainWindow は、メニュー バー (メニュー バー)、複数のツールバー (ツールバー)、複数のアンカー コンポーネント (ドック ウィジェット)、および中央コンポーネント (中央ウィジェット) を含むメイン ウィンドウ プログラムを提供するクラスです。
ここに画像の説明を挿入

  • メニューバーは1つだけ
	//菜单栏创建
    QMenuBar *bar=new QMenuBar();

    //将菜单栏放入窗口中
    setMenuBar(bar);

    //创建菜单
    QMenu *fileMenu=bar->addMenu("文件");
    QMenu *editMenu=bar->addMenu("编辑");

    //创建菜单项
    QAction *newAction1 = fileMenu->addAction("新建1");
    QAction *newAction2 = fileMenu->addAction("新建2");
    //添加分割线
    fileMenu->addSeparator();
    QAction *newAction3 = fileMenu->addAction("新建3");
  • ツールバーは複数持つことができます
	//工具栏 可以有多个
    QToolBar *toolBar=new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,toolBar);

    //后期设置 只允许左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);

    //设置浮动
    toolBar->setFloatable(false);

    //设置移动(总开关)
    toolBar->setMovable(false);

    //工具栏中设置内容
    toolBar->addAction(newAction1);
    toolBar->addSeparator();
    toolBar->addAction(newAction2);
    toolBar->addAction(newAction3);

    QPushButton *btn=new QPushButton(this);
    btn->setText("aaa");
    toolBar->addWidget(btn);
  • ステータスバーは最大で 1 つ
//状态栏 最多有一个
    QStatusBar *stBar=statusBar();
    //设置到窗口中
    setStatusBar(stBar);
    //放标签控件
    QLabel *label=new QLabel("提示信息",this);
    stBar->addWidget(label);

    QLabel *label2=new QLabel("右侧提示信息",this);
    stBar->addPermanentWidget(label2);
  • フローティング ウィンドウは複数のウィンドウを持つことができます
//铆接部件(浮动窗口)可以有多个
    QDockWidget *dockWidget=new QDockWidget("浮动",this);
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);

  • 中心部は 1 つしか存在できません
//设置中心部件 只能有一个
    QTextEdit *edit=new QTextEdit(this);
    setCentralWidget(edit);

2.2 リソースファイル

  • 画像フォルダーをプロジェクトの場所にコピーします
  • プロジェクトを右クリック-「新しいファイルを追加-」Qt-「Qtリソースファイル」-「リソースフォルダーに名前を付けます
  • 生成: リソースフォルダー名.qrc
  • リソース フォルダー name.qrc を右クリックし、エディターで開いて編集します。
  • 最初にプレフィックスを追加してから、ファイルを追加します
  • 使用: 「:+プレフィックス+ファイル名」
//使用添加Qt资源 ": + 前缀名 + 文件名"
    ui->actionnew->setIcon(QIcon(":/Image/img1.jpg"));
    ui->actionopen->setIcon(QIcon(":/Image/img2.jpg"));

ここに画像の説明を挿入

2.3 ダイアログ

モーダルダイアログボックス(他のウィンドウでは操作不可)

connect(ui->actionNew,&QAction::triggered,[=](){
    
    
        //对话框 分类
        //模态对话框 (不可以对其他窗口进行操作)
        //非模态对话框(可以对其他窗口进行操作)
        //模态创建 阻塞
        QDialog dlg(this);
        dlg.resize(200,100);
        dlg.exec();
        qDebug()<<"模态对话框弹出了";
    }); 

非モーダル ダイアログ ボックス (他のウィンドウで操作可能)

connect(ui->actionNew,&QAction::triggered,[=](){
    
    
        QDialog *dlg2=new QDialog(this);
        dlg2->resize(200,100);
        dlg2->setAttribute(Qt::WA_DeleteOnClose);
        dlg2->show();
        qDebug()<<"非模态对话框弹出了";
    });

標準ダイアログ

  • ダイアログ ボックスを作成するための QMessageBox 静的メンバ関数
  • エラー、情報、質問、警告
  • パラメーター 1: 親、パラメーター 2: タイトル、パラメーター 3: 表示内容、パラメーター 4: キーの種類、パラメーター 5: デフォルトで関連付けられたエンター キー
  • 戻り値も StandardButton 型です。戻り値を使用してユーザー入力を判断します。
	//消息对话框
    connect(ui->actionNew,&QAction::triggered,[=](){
    
    
        //错误对话框
        QMessageBox::critical(this,"critical","错误");

        //信息对话框
        QMessageBox::information(this,"information","信息");

        //提问对话框
        //参数1:父亲,参数2:标题,参数3:提示内容,参数4:按键类型,参数5:默认关联回车按键
        if(QMessageBox::Save==QMessageBox::question(this,"question","问题",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)){
    
    
            qDebug()<<"Save";
        }else{
    
    
            qDebug()<<"Cancel";
        }
        //警告对话框
        QMessageBox::warning(this,"warning","警告");

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

その他のダイアログ

        //颜色对话框
        QColor color=QColorDialog::getColor(QColor(255,0,0));
        qDebug()<<"r="<<color.red()<<"g="<<color.green()<<"b="<<color.blue();

ここに画像の説明を挿入

        //选择文件对话框
        QString qstr=QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\hulin\\Desktop","(*.pdf)");
        qDebug()<<qstr;

ここに画像の説明を挿入

        //选择字体对话框
        bool flag;
        QFont font =QFontDialog::getFont(&flag,QFont("微软雅黑",36));
        qDebug()<<"字体:"<<font.family()<<"字号:"<<font.pointSize()<<"加粗:"<<font.bold()<<"倾斜:"<<font.italic();

ここに画像の説明を挿入

2.4 インターフェースのレイアウト

  • ログインウィンドウを実装する
  • レイアウト方式で窓を美しく
  • レイアウト、水平レイアウト、垂直レイアウト、グリッド レイアウトのウィジェットを選択します
  • アカウント、パスワード、ログイン、キャンセルボタンのレイアウト
  • デフォルト ウィンドウとコントロールの間には 9 ピクセルのギャップがあります。
  • 春のレイアウト
    ここに画像の説明を挿入

ここに画像の説明を挿入

2.5 共通コントロール

ボタングループ

  • QPushButton 共通ボタン
  • QToolButton ツール ボタンは、画像を表示するために使用されます。テキストを表示する場合は、スタイルを変更します: toolButtonStyle、隆起スタイル autoRaise
  • radioButton ラジオ ボタン、デフォルトを設定
  • チェックボックス複数選択ボタン、状態監視、2選択中、1半選択中、0未選択
    ここに画像の説明を挿入

ListWidget リスト コンテナ

  • QListWidgetItem * 行の項目内容
  • ui->listWidget->addItem(アイテム)
  • センタリング方法を設定 item->setTextAlignment(Qt::AlignHCenter)
  • addItems を使用して、コンテンツ全体を一度に追加できます
//利用listwidget写诗
    QListWidgetItem *item=new QListWidgetItem("锄禾日当午");
    //将一行诗放到listWidget控件中
    ui->listWidget->addItem(item);
//QStringList QList<QString>
    QStringList list;
    list<<"锄禾日当午"<<"汗滴禾下土"<<"谁知盘中餐"<<"粒粒皆辛苦";
    ui->listWidget->addItems(list);

ここに画像の説明を挿入

QTreeWidget ツリー コントロール

  • ヘッダーを設定
  • ルート ノードを作成する
  • ルート ノードをツリー コントロールに追加する
  • 子ノードを追加
//设置头
    ui->treeWidget->setHeaderLabels(QStringList()<<"标题"<<"内容");

    //创建根节点
    QTreeWidgetItem *item_1=new QTreeWidgetItem(QStringList()<<"标题1");
    QTreeWidgetItem *item_2=new QTreeWidgetItem(QStringList()<<"标题2");
    QTreeWidgetItem *item_3=new QTreeWidgetItem(QStringList()<<"标题3");

    //添加根节点到树控件上
    ui->treeWidget->addTopLevelItem(item_1);
    ui->treeWidget->addTopLevelItem(item_2);
    ui->treeWidget->addTopLevelItem(item_3);

    //添加子节点
    QTreeWidgetItem *item_1_1=new QTreeWidgetItem(QStringList()<<"标题1.1"<<"内容1.1");
    item_1->addChild(item_1_1);

    QTreeWidgetItem *item_1_2=new QTreeWidgetItem(QStringList()<<"标题1.2"<<"内容1.2");
    item_1->addChild(item_1_2);

    QTreeWidgetItem *item_2_1=new QTreeWidgetItem(QStringList()<<"标题2.1"<<"内容2.1");
    item_2->addChild(item_2_1);

    QTreeWidgetItem *item_2_2=new QTreeWidgetItem(QStringList()<<"标题2.2"<<"内容2.2");
    item_2->addChild(item_2_2);

    QTreeWidgetItem *item_3_1=new QTreeWidgetItem(QStringList()<<"标题3.1"<<"内容3.1");
    item_3->addChild(item_3_1);

    QTreeWidgetItem *item_3_2=new QTreeWidgetItem(QStringList()<<"标题3.2"<<"内容3.2");
    item_3->addChild(item_3_2);

ここに画像の説明を挿入

QTableWidget フォーム コントロール

//表格控件
    //设置列数
    ui->tableWidget->setColumnCount(3);

    //设置表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");

    //设置行数
    ui->tableWidget->setRowCount(3);

    //设置正文
    QStringList nameList;
    nameList<<"亚瑟"<<"赵云"<<"花木兰";
    QList<QString> sexList;
    sexList<<"男"<<"男"<<"女";

    for(int i=0;i<3;i++){
    
    
        int col=0;
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));
        //int 转 QString
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18)));
    }

ここに画像の説明を挿入

2.6 カスタム コントロール

  • スタック コントロールの使用
//栈控件的使用
    //设置默认定位
    ui->stackedWidget->setCurrentIndex(1);
    connect(ui->pushButton_ScrollArea,&QPushButton::clicked,[=](){
    
    
        ui->stackedWidget->setCurrentIndex(0);
    });
    connect(ui->PushButton_ToolBox,&QPushButton::clicked,[=](){
    
    
        ui->stackedWidget->setCurrentIndex(1);
    });
    connect(ui->PushButton_TabWidget,&QPushButton::clicked,[=](){
    
    
        ui->stackedWidget->setCurrentIndex(2);
    });

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

  • ドロップダウンボックス
//下拉框
    ui->comboBox->addItem("奔驰");
    ui->comboBox->addItem("宝马");
    ui->comboBox->addItem("奥迪");

ここに画像の説明を挿入

  • 表示画像
  • アニメーションを表示
    ui->label_img->setPixmap(QPixmap(":/Image/img1.jpg"));
    QMovie *movie=new QMovie("/Image/img7.gif");
    ui->label_gif->setMovie(movie);
    movie->start();

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_40507857/article/details/125863093