日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt学习笔记(二)

發布時間:2023/12/9 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt学习笔记(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

QMainWindow

QMainWindow是一個為用戶提供主窗口程序的類,包含一個菜單欄(menu bar)、多個工具欄(tool bars)、多個錨接部件(dock widgets)、一個狀態欄(status bar)及一個中心部件(central widget),是許多應用程序的基礎,如文本編輯器,圖片編輯器等。

菜單欄、工具欄、狀態欄、鉚接部件、中心部件

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {resize(600, 400);//1.菜單欄 只能有一個QMenuBar *bar = menuBar();setMenuBar(bar);//創建菜單QMenu *fileMenu = bar->addMenu("文件");QMenu *editMenu = bar->addMenu("編輯");//創建菜單項QAction *newAction = fileMenu->addAction("新建");//分割線fileMenu->addSeparator();QAction *openAction = fileMenu->addAction("打開");//2.工具欄 可以有多個QToolBar *toolBar = new QToolBar(this);//往本MainWindow對象左側添加工具欄toolBaraddToolBar(Qt::LeftToolBarArea, toolBar);//設置只允許左右停靠toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//設置浮動toolBar->setFloatable(false); //不允許浮動//設置是否可移動(總開關)toolBar->setMovable(false);//工具欄中放入小部件toolBar->addAction(newAction); //和菜單項的新建是一樣的toolBar->addSeparator();toolBar->addAction(openAction);//3.狀態欄(在MainWindow下方) 只有一個QStatusBar *stBar = statusBar(); //創建一個狀態欄//為MainWindow設置狀態欄setStatusBar(stBar);//標簽QLabel *label1 = new QLabel("左側提示信息", this);stBar->addWidget(label1);QLabel *label2 = new QLabel("右側提示信息", this);stBar->addPermanentWidget(label2);//4.鉚接部件 (浮動窗口) >=1QDockWidget *dock = new QDockWidget("aaa", this);// 將鉚接部件放置于核心部件的指定位置(這里放于其頂部)addDockWidget(Qt::BottomDockWidgetArea, dock);//核心部件 <= 1QTextEdit *edit = new QTextEdit(this);//void QMainWindow::setCentralWidget(QWidget *widget)setCentralWidget(edit);}

效果

資源文件添加

要將圖片文件夾放到項目文件夾下面

在qtcreater中文件夾右鍵選擇【添加新文件】,選擇【Qt】以及【Qt Resource File】

然后起個名,一路下一步,創建好資源文件。

在新建的資源文件右擊鼠標選中【Open in Editor】

將前綴修改為\即可

點添加選擇添加文件,選擇剛剛添加到項目文件夾下的資源文件

然后選擇構建->執行qmake,資源就會被導入進去

使用的時候:

路徑可以點擊圖標右擊有個copy路徑

ui->actionOpen->setIcon(QIcon(":/Image/LuffyQ.png"));

模態和非模態對話框

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);//點擊新建 創建對話框connect(ui->actionNew, &QAction::triggered, this, [=](){//對話框:模態對話框(阻塞狀態)、非模態對話框//模態對話框開啟時別的窗口都不能選中,非模態對話框則可以//1.模態對話框QDialog dlg(this);dlg.resize(120, 30);//阻塞,導致其他窗口(部件)都不能被點擊dlg.exec();//非模態對話框//如果在棧上創建QDialog對象,會造成該控件顯示一閃而過//因為dlg2生命周期在函數結束就消失//QDialog dlg2(this);QDialog *dlg2 = new QDialog(this);dlg2->resize(200, 200);dlg2->show();//防止內存泄漏//55 Makes Qt delete this widget when the widget has accepted the close eventdlg2->setAttribute(Qt::WA_DeleteOnClose);}); }

標準對話框

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);//點擊新建 創建對話框connect(ui->actionNew, &QAction::triggered, this, [=](){//QMessageBox對話框//1.錯誤提示對話框QMessageBox::critical(this, "錯誤", "critical");//2.信息提示對話框QMessageBox::information(this, "信息", "info");//3.詢問提示對話框//各種特定的對話框靜態函數的參數和返回值://param1 父窗口//param2 標題//param3 提示信息//param4 按鍵類型//param5 默認關聯回車的按鍵//返回值:用戶選擇的按鈕if(QMessageBox::Save == QMessageBox::question(this, "詢問", "question", QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Cancel)){qDebug()<<"點擊了Save";}else{qDebug()<<"點擊了其他按鈕 ";}//警告提示對話框QMessageBox::warning(this, "警告", "warning");}); }

其他對話框:QColorDialog、QFileDialog、QFontDialog

//顏色對話框//QColor color = QColorDialog::getColor(Qt::red);//rgb//qDebug()<<color.red() << color.green() << color.blue();//文件對話框//param3 默認路徑//param4 過濾文件//QString fileName = QFileDialog::getOpenFileName(this, "打開文件", "D:\\RjDir\\admin_7407499e-7fa7-4e1a-9d05-ac4e40b55c38\\Desktop", "(*.doc *.docx)");//qDebug()<<fileName;//字體對話框bool flag;QFont font = QFontDialog::getFont(&flag, QFont("等線",36));qDebug()<< "字體" <<font.family().toUtf8().data()<<"字號"<<font.pointSize()<<"是否加粗"<<font.bold()<<"是否傾斜"<<font.italic();

可拖控件

彈簧 Horizontal Spacer來布局優化

用Widget包裹起控件進行布局操作

水平布局:針對控件在一條水平線上

垂直布局:針對控件在同一縱向上

QWidget相關屬性:sizePolicy

? minimumSize和maximumSize設置相同大小來固定窗體大小

layoutLeftMargin、layoutRightMargin、layoutTopMargin、layoutBottomMargin來設置控件與窗體左右邊界的距離(像素),設為0可讓控件能貼邊。

  • QToolButton 工具按鈕,用于顯示圖片
    • toolButtonStyle 設置顯示圖片還是顯示文字
    • autoRaise透明突起效果
  • QRadioBox單選按鈕
    • 默認選擇 setChecked(true)
  • QCheckBox 復選按鈕
    • 按下會發出stateChanged信號,并帶有一個參數表示狀態。

Item Widgets

QListWidget控件

//QListWidget控件 //1.創建list項 //QListWidgetItem *item = new QListWidgetItem("舊時王謝堂前燕"); //2.將list項加入QlistWidget控件中 //ui->listWidget->addItem(item);//添加多個列表項 //QStringList 相當于QList<QString>類似于 list<string> QStringList list; //往list添加四個QString對象 list<<"床前明月光"<<"疑是地上霜"<<"舉頭望明月"<<"低頭思故鄉"; ui->listWidget->addItems(list);

QTreeWidget樹控件

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);//QTreeWidget樹控件的使用//設置頭ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄簡介");//創建出樹的節點控件QTreeWidgetItem *liItem = new QTreeWidgetItem(QStringList()<<"力量");QTreeWidgetItem *minItem = new QTreeWidgetItem(QStringList()<<"敏捷");QTreeWidgetItem *zhiItem = new QTreeWidgetItem(QStringList()<<"智力");//將節點掛到樹上ui->treeWidget->addTopLevelItem(liItem);ui->treeWidget->addTopLevelItem(minItem);ui->treeWidget->addTopLevelItem(zhiItem);QStringList heroL1, heroL2, heroM1, heroM2, heroZ1, heroZ2;heroL1 << "剛被豬" << "前排坦克,能在吸收傷害的同時造成可觀的范圍輸出";heroL2 << "船長" << "前排坦克,能肉能輸出能控場的全能英雄";heroM1 << "月騎" << "中排物理輸出,可以使用分裂利刃攻擊多個目標";heroM2 << "小魚人" << "前排戰士,擅長偷取敵人的屬性來增強自身戰力";heroZ1 << "死靈法師" << "前排法師坦克,魔法抗性較高,擁有治療技能";heroZ2 << "巫醫" << "后排輔助法師,可以使用奇特的巫術詛咒敵人與治療隊友";QTreeWidgetItem *l1 = new QTreeWidgetItem(heroL1);QTreeWidgetItem *l2 = new QTreeWidgetItem(heroL2);QTreeWidgetItem *m1 = new QTreeWidgetItem(heroM1);QTreeWidgetItem *m2 = new QTreeWidgetItem(heroM2);QTreeWidgetItem *z1 = new QTreeWidgetItem(heroZ1);QTreeWidgetItem *z2 = new QTreeWidgetItem(heroZ2);//往liItem下添加孩子節點項liItem->addChild(l1);liItem->addChild(l2);minItem->addChild(m1);minItem->addChild(m2);zhiItem->addChild(z1);zhiItem->addChild(z2); }

效果

QTableWidget控件

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);//QTableWidget控件的使用//設置列數ui->tableWidget->setColumnCount(3);//1.設置水平表頭ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性別"<<"年齡");//設置行數ui->tableWidget->setRowCount(5);QList<QString> nameList; //相當于STL的list<string>nameList<<"亞瑟"<<"安琪拉"<<"妲己"<<"趙云"<<"孫悟空";QStringList sexList;sexList<<"男"<<"女"<<"女"<<"男"<<"未知";//添加條目//ui->tableWidget->setItem(0, 0, new QTableWidgetItem(QString("亞瑟")));for(int i = 0;i < 5;++i){int col = 0;ui->tableWidget->setItem(i, col++, new QTableWidgetItem(nameList[i]));ui->tableWidget->setItem(i, col++, new QTableWidgetItem(sexList.at(i)));ui->tableWidget->setItem(i, col++, new QTableWidgetItem(QString::number(i + 18)));} }

效果

其他控件

stackedWidget控件

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);//設置stackedWidget默認顯示頁面ui->stackedWidget->setCurrentIndex(0);//點擊按鈕切換 stacked容器connect(ui->btn_scrollArea, &QPushButton::clicked, [=](){ui->stackedWidget->setCurrentIndex(0);});connect(ui->btn_toolBox, &QPushButton::clicked, [=](){ui->stackedWidget->setCurrentIndex(1);});connect(ui->btn_tabWidget, &QPushButton::clicked, [=](){ui->stackedWidget->setCurrentIndex(2);});//下拉框ComboBox使用ui->comboBox->addItem("Google");ui->comboBox->addItem("FaceBook");ui->comboBox->addItem("Microsoft");//點擊按鈕,選中下拉框中Microsoft選項connect(ui->btn_select, &QPushButton::clicked, [=](){//ui->comboBox->setCurrentIndex(2);ui->comboBox->setCurrentText("Microsoft");});//利用QLabel顯示圖片,需導入資源ui->label_img->setPixmap(QPixmap(":/Image/sunny.png"));//利用QLabel顯示動圖 gifQMovie *movie = new QMovie(":/Image/mario.gif");ui->label_movie->setMovie(movie);movie->start();}

效果

雜項

防止出現中文字符串導致報錯的方法:

頭部加上:

#pragma execution_character_set("utf-8")

但是輸出的中文都會變成亂碼

中文字符串結尾加上空格,但是輸出時空格會被轉為???

總結

以上是生活随笔為你收集整理的qt学习笔记(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。