エントリーから実戦までのQt
初日
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();