初識Qt窗口界面


1、新建一個新的Qt Gui應用,項目名稱隨意,例如MyMainWindow,基類選擇QMainWindow,類名為MainWindow。

2、項目建立后,雙擊mainwindow.ui文件,在界面的“在這里輸入”的地方進行雙擊,改寫為“文件(&F)”,並按下回車鍵。此時,界面左上角顯示“文件(F)”,並將其快捷鍵設置為Alt+F。

3、同理,在文件的下拉菜單中添加“新建”選項。此時,在Action編輯器中可以看到剛添加的新建菜單,如下圖第一行所示。

4、雙擊action_N,可以打開"新建"選項的動作編輯屬性對話框,如下圖所示。並設置其快捷鍵為Ctrl+N。注意圖標后面的黑色下拉箭頭可以用於選擇添加資源還是添加文件。通過該箭頭選擇添加資源,可以實現對新建選項對應圖標的添加。此處,我們需要事先在項目中添加圖標文件,才能在該下拉箭頭添加資源時找到對應的圖標,做法見下步。

5、在工程項目單擊右鍵選擇添加新文件,同時選擇Qt下的Qt資源文件,並設置名稱為myResources,此時,工程中多了后綴為qrc的資源文件,並自動切換到該文件所在的界面。通過點擊界面左下角的添加按鈕進行圖標資源的添加。此時需要先添加前綴,再添加文件。前綴默認為/new/prefix1,此時可以根據添加對象的名稱隨便修改,但不要用中文,完成之后注意保存文件。添加完成如下圖所示。

6、此時,重新回到新建動作屬性對話框,單擊圖標選項末端的黑色下拉箭頭,選擇添加資源,選擇對應的圖標。完成之后,在相應的ui文件中顯示新建選項前出現對應圖標,同時運行后,顯示相應的效果。

7、前面演示了通過ui文件來進行菜單欄選項的添加,下面通過程序來實現菜單欄及其下拉菜單各個選項、工具欄、狀態欄以及添加懸浮工具窗和建立文本窗編輯器的方法。

 1 #include "mainwindow.h"
 2 #include "ui_mainwindow.h"
 3 #include "qtextcodec.h"
 4 #include <QToolButton>
 5 #include <QSpinBox>
 6 #include <QTextEdit>
 7 #include<QMdiSubWindow>
 8 #include<QLabel>
 9 
10 MainWindow::MainWindow(QWidget *parent) :
11     QMainWindow(parent),
12     ui(new Ui::MainWindow)
13 {
14     ui->setupUi(this);
15     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());//解決中文字符亂碼問題
16 
17     QAction *openAction = new QAction(tr("&打開"), this); // 創建新的動作
18     QIcon icono(":/myImages/fileopen.png");// 添加圖標
19     openAction->setIcon(icono);
20     openAction->setShortcut(QKeySequence(tr("Ctrl+O"))); // 設置快捷鍵
21     ui->menu->addAction(openAction);  // 在文件菜單中設置新的打開動作
22 
23     QAction *saveAction = new QAction(tr("&保存"), this);
24     QIcon icons(":/myImages/filesave.png");
25     saveAction->setIcon(icons);
26     saveAction->setShortcut(QKeySequence(tr("Ctrl+S")));
27     ui->menu->addAction(saveAction);
28 
29     QAction *saveasAction = new QAction(tr("&另保存"), this);
30     QIcon icona(":/myImages/filesaveas.png");
31     saveasAction->setIcon(icona);
32     saveasAction->setShortcut(QKeySequence(tr("Ctrl+A")));
33     ui->menu->addAction(saveasAction);
34 
35      QMenu *editMenu = ui->menuBar->addMenu(tr("編輯(&E)"));//使用ui->menuBar來獲取QMainWindow的菜單欄
36      QAction *findAction = editMenu->addAction(tr("&查找"));
37      QIcon iconf(":/myImages/filefind.png");
38      findAction->setIcon(iconf);
39      findAction->setShortcut(QKeySequence(tr("Ctrl+F")));
40 
41      QMenu *helpMenu = ui->menuBar->addMenu(tr("幫助(&P)"));
42 
43 
44      QActionGroup *group = new QActionGroup(this);//建立動作組
45      QAction *action_L = group->addAction(tr("左對齊(&L)"));
46      action_L->setCheckable(true);//狀態可選中
47      QAction *action_R = group->addAction(tr("右對齊(&R)"));
48      action_R->setCheckable(true);
49      QAction *action_C = group->addAction(tr("居中(&C)"));
50      action_C->setCheckable(true);
51      action_L->setChecked(true);//指定action_L為選中狀態
52      editMenu->addSeparator();//向菜單欄中添加間隔器,編輯的下拉菜單最后選項下面添加一條水平分隔線
53      editMenu->addAction(action_L);//向菜單中添加動作
54      editMenu->addAction(action_R);
55      editMenu->addAction(action_C);
56 
57 
58      QToolButton *toolBtn = new QToolButton(this);
59      toolBtn->setText(tr("顏色"));
60      QMenu *colorMenu = new QMenu(this);
61      colorMenu->addAction(tr("紅色"));
62      colorMenu->addAction(tr(" 綠色"));
63      toolBtn->setMenu(colorMenu);
64      //設置彈出模式,右側有小箭頭用於下拉菜單選擇。去掉該句,需要長按tooBtn才能彈出下拉菜單
65      toolBtn->setPopupMode(QToolButton::MenuButtonPopup);
66      ui->mainToolBar ->addWidget(toolBtn);//里喲個addWidget()函數向工具欄中添加部件
67      QSpinBox *spinBox = new QSpinBox(this);
68      ui->mainToolBar->addWidget(spinBox);
69 
70     //顯示臨時消息,顯示2000毫秒即2秒鍾
71      ui->statusBar->showMessage(tr("歡迎使用Qt"), 2000);
72      //創建標簽,設置標簽樣式並顯示消息,然后將其以永久部件的形式添加到狀態欄
73      QLabel *permanent = new QLabel(this);
74      permanent->setFrameStyle(QFrame::Box | QFrame::Sunken);
75      permanent->setText(tr("Qt窗口設計"));
76      ui->statusBar->addPermanentWidget(permanent); //添加永久性信息
77 
78 }
79 
80 MainWindow::~MainWindow()
81 {
82     delete ui;
83 }
84 
85 void MainWindow::on_action_N_triggered()
86 {
87     QTextEdit *edit = new QTextEdit(this);//新建文本編輯器部件
88     //使用QWdiArea類的addSunWindow()函數創建子窗口,以文本編輯器為中心部件
89     QMdiSubWindow *child = ui->mdiArea->addSubWindow(edit);
90     child->setWindowTitle(tr("多文檔編輯器子窗口"));
91     child->show();
92 }
93 
94 void MainWindow::on_action_Dock_triggered()
95 {
96     ui->dockWidget->show();
97 }

 8、在界面中添加中心部件(如多文檔編輯器)或者Dock部件(如工具箱),需要在ui界面文件中拖入一個MidArea部件或者一個Dock部件,並在Action編輯器中找到對應的部件,單擊右鍵選擇“轉到槽”,為其添加一個triggered()函數,編寫其相應的功能。同時還可以在右側對這些部件進行屬性設置。

9、設置完畢后,運行效果如下面的截圖所示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM