<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
內容繁多,直接上程式碼
重點請看mainwindow.cpp的中程式碼和ui如何設計的
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include<QPushButton> #include <QMainWindow> #include <QTextCodec>//解決字元編碼亂碼問題 #include<QTextEdit> #include <QSlider>//滑動杆 QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); public slots: private slots: void textbutton_1(); void on_PBT_clicked(); void on_PBJ_clicked(); void on_PBL_clicked(); void on_pushButton_8_clicked(); void on_pushButton_9_clicked(); void on_pushButton_11_clicked(); void on_pushButton_13_clicked(); void on_pushButton_12_clicked(); void on_pushButton_10_clicked(); void display(int); void on_horizontalScrollBar_valueChanged(int value); void on_verticalScrollBar_valueChanged(int value); void on_horizontalSlider_valueChanged(int value); void on_verticalSlider_valueChanged(int value); void on_calendarWidget_clicked(const QDate &date); void on_pushButton_15_clicked(); void on_pushButton_14_clicked(); void on_pushButton_17_clicked(); private: Ui::MainWindow *ui; QTextCodec *codec; QString filename; QPushButton* bt_filename; QPushButton* bt_getcolor; QPushButton* bt_getfont; QPushButton* bt_getinput; QPushButton* bt_error; QPushButton* bt_message; QPushButton* bt_progress; QTextEdit *te_test; QPushButton *p1; QScrollBar *sb; }; #endif // MAINWINDOW_H
#include "mainwindow.h" #include "ui_mainwindow.h" #include<QString> #include<QProgressBar>//進度條標頭檔案 #include<QDebug>//控制檯輸出 //==========================佈局管理器 #include<QVBoxLayout>//水平 #include<QHBoxLayout>//垂直 #include<QGridLayout>//網格 //==========================各大對話方塊類 #include<QColorDialog> #include<QFileDialog> #include<QInputDialog> #include<QErrorMessage> #include <QProgressDialog> #include <QFontDialog> #include<QFileDialog> #include<QMessageBox> //檔案讀寫 #include <QFile> //行編輯 #include<QLineEdit> //卷軸 #include<QScrollBar> //標籤顯示動畫 #include<QMovie> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); ui->progressBar->setValue(0); codec = QTextCodec::codecForName("gbk");//設定字元編碼 codec->setCodecForLocale(codec); setWindowTitle(codec->toUnicode("UI學習筆記")); ui->stackedWidget->setCurrentIndex(0);//顯示當前索引,第一頁 //檔案對話方塊 connect(ui->pushButton_2,&QPushButton::clicked,[&]{QString filename = QFileDialog::getOpenFileName();ui->textEdit_3->append(filename);}); //顏色對話方塊 connect(ui->pushButton_3, &QPushButton::clicked, [&](){ QColor color = QColorDialog::getColor(); ui->textEdit_3->setTextColor(color); }); //字型對話方塊 bool ok; connect(ui->pushButton_4,&QPushButton::clicked,[&](){QFont font = QFontDialog::getFont(&ok); if(ok) { ui->textEdit_3->setCurrentFont(font); } }); //輸入對話方塊 connect(ui->pushButton_5, &QPushButton::clicked, [&](){ QString str = QInputDialog::getText(this, "Title", "input"); ui->textEdit_3->append(str); }); //資訊對話方塊 connect(ui->pushButton_6,&QPushButton::clicked,[&](){ int ret = QMessageBox::information(this,"Title","you yyds",QMessageBox::Ok,QMessageBox::Apply,QMessageBox::Close); if(ret ==QMessageBox::Ok) { ui->textEdit_3->append("111111111111111111111111"); } }); //錯誤對話方塊 connect(ui->pushButton_7, &QPushButton::clicked, [&](){ QErrorMessage *error= new QErrorMessage; error->showMessage("error error error"); }); } MainWindow::~MainWindow() { delete ui; } //瀏覽按鈕 void MainWindow::on_PBL_clicked() { filename = QFileDialog::getOpenFileName();//檔案對話方塊 ui->lineEdit->setText(filename); } //加密按鈕 void MainWindow::on_PBJ_clicked() { //讀寫檔案開啟 QFile f(filename); if(!f.open(QIODevice::ReadWrite)) return; //讀取全部內容 QByteArray buf = f.readAll(); ui->textEdit->append(codec->toUnicode(buf));//加密前 ui->progressBar->setRange(0,buf.length()-1); for(int i=0; i<buf.length();i++) { buf[i]=~buf[i]; ui->progressBar->setValue(i);//進度條 } ui->textEdit_2->append(codec->toUnicode(buf));//加密後 //回寫 f.seek(0); f.write(buf); //關閉 f.close(); } //下一頁 void MainWindow::on_PBT_clicked() { ui->stackedWidget->setCurrentIndex(1); } //上一頁: void MainWindow::on_pushButton_8_clicked() { ui->stackedWidget->setCurrentIndex(0); } //下一頁 void MainWindow::on_pushButton_9_clicked() { ui->pushButton->setIconSize(QSize(80,80));//設定按鈕圖示大小 //ui->pushButton->setFlat(true);//設定無邊框 ui->pushButton->setIcon(QIcon("C:/Users/SuJieYin/Pictures/Saved Pictures/1.png")); ui->pushButton->show(); ui->toolButton->setIconSize(QSize(50,50)); //ui->toolButton->setIcon(QIcon("C:/Users/SuJieYin/Pictures/Saved Pictures/1.png")); ui->toolButton->setToolTip("Tip");//選中按鈕時,會有提示文字 ui->toolButton->setText("toolbutton"); ui->toolButton->show(); //繫結快捷鍵 ui->toolButton->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_W)); connect(ui->toolButton,SIGNAL(clicked(bool)),this,SLOT(textbutton_1())); //RadioButton_2設定圖示 ui->radioButton_2->setIcon(QIcon("C:/Users/SuJieYin/Pictures/Saved Pictures/1.png")); ui->radioButton_2->click();//選中按鈕 ui->radioButton_2->setEnabled(true);//設定使能 connect(ui->radioButton_2, &QRadioButton::clicked, [&](){//lamda表示式(無名函數) qDebug()<<"RadioButton_2"; }); //CheckBox按鈕 ui->checkBox_2->setIcon(QIcon("C:/Users/SuJieYin/Pictures/Saved Pictures/1.png")); connect(ui->checkBox_2, &QRadioButton::clicked, [&](){//lamda表示式(無名函數) qDebug()<<"checkBox_2"; }); //行編輯框使用舉例 ui->lineEdit_2->setEchoMode(QLineEdit::Password);//行編輯框輸入隱藏 //選中檢查框,顯示密碼, connect(ui->checkBox_3,&QCheckBox::clicked,[&](bool x){ ui->lineEdit_2->setEchoMode(x?QLineEdit::Normal:QLineEdit::Password); } ); ui->stackedWidget->setCurrentIndex(2);//顯示這一頁的所有部件 } //快捷鍵和單擊按鈕都可以觸發 void MainWindow::textbutton_1() { qDebug()<<"CTRL+w"; } //下一頁:實現輸入小部件類元件 void MainWindow::on_pushButton_13_clicked() { //組合k框 ui->comboBox->addItem("com1"); ui->comboBox->addItem("com2"); //點選文字後,顯示文字 connect(ui->comboBox,&QComboBox::currentTextChanged,[&](QString x){ ui->label_5->setText(x);}); //字型選擇框 connect(ui->fontComboBox,&QFontComboBox::currentFontChanged,[&](QFont x){ ui->label_6->setFont(x); ui->label_6->setText("OKKO"); ui->lineEdit_3->setFont(x); ui->textEdit_4->setCurrentFont(x); ui->plainTextEdit->setToolTip("123");//設定提示 ui->plainTextEdit->appendPlainText("http://");//顯示文字 }); //自旋框 ui->spinBox->setRange(0,10);//設定取值範圍 connect(ui->spinBox,SIGNAL(valueChanged(int)),ui->lcdNumber,SLOT(display(int))); ui->stackedWidget->setCurrentIndex(3); //旋鈕 connect(ui->dial,SIGNAL(valueChanged(int)),ui->lcdNumber,SLOT(display(int))); //卷軸 //sb= new QScrollBar;//沒有指定視窗,會自己彈出一個視窗; sb= new QScrollBar(ui->page_4);//只顯示在這頁【重點】 sb->setOrientation(Qt::Horizontal);//設定水平方向 sb->setGeometry(20,500,100,10); sb->show(); connect(sb,SIGNAL(valueChanged(int)),ui->lcdNumber,SLOT(display(int))); ui->stackedWidget->setCurrentIndex(3); } //上一頁 void MainWindow::on_pushButton_12_clicked() { ui->stackedWidget->setCurrentIndex(1); } //下一頁【第5頁】 void MainWindow::on_pushButton_11_clicked() { ui->label_8->setAlignment(Qt::AlignCenter);//水平居中 ui->label_8->setScaledContents(true);//設定標籤自動縮放上面的圖片 ui->label_8->setPixmap(QPixmap("C:/Users/SuJieYin/Pictures/Saved Pictures/2.png")); ui->label_9->setAlignment(Qt::AlignCenter);//水平居中 ui->label_9->setFixedSize(200,120); QMovie *m = new QMovie("C:/Users/SuJieYin/Pictures/Saved Pictures/1.gif"); ui->label_9->setMovie(m);//設定動畫 ui->label_8->setScaledContents(true);//設定標籤自動縮放上面的圖片 m->start();//開啟動畫 //文字瀏覽框 ui->textBrowser->setHtml(codec->toUnicode("<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鳥教學(runoob.com)</title> </head> <body> <h1>我的第一個標題</h1> <p>我的第一個段落。</p> </body> </html>")); //圖形檢視框架 //日曆 ui->stackedWidget->setCurrentIndex(4); } //上一頁【第4頁】 void MainWindow::on_pushButton_10_clicked() { ui->stackedWidget->setCurrentIndex(2); } //點選SpinBox顯示LCDNumber void MainWindow::display(int i) { ui->lcdNumber->setMinimumHeight(i);//設定最小行高 } //水平滑動條 void MainWindow::on_horizontalScrollBar_valueChanged(int value) { ui->lcdNumber->display(value);//顯示值 } //垂直卷軸 void MainWindow::on_verticalScrollBar_valueChanged(int value) { ui->verticalScrollBar->setRange(0,100); ui->lcdNumber->display(value);//顯示值 } //水平滑動卷軸 void MainWindow::on_horizontalSlider_valueChanged(int value) { ui->lcdNumber->display(value);//顯示值 } //垂直滑動卷軸 void MainWindow::on_verticalSlider_valueChanged(int value) { ui->lcdNumber->display(value);//顯示值 } //================================================== //單擊日曆時顯示 void MainWindow::on_calendarWidget_clicked(const QDate &date) { ui->textBrowser->setText(date.toString()); } //上一頁 void MainWindow::on_pushButton_15_clicked() { qDebug()<<"======================="<<endl; ui->stackedWidget->setCurrentIndex(3); } //下一頁 void MainWindow::on_pushButton_14_clicked() { //GroupBox容器 ui->radioButton->setChecked(true);//設定檢查 ui->verticalLayout_2->addStretch(1);//新增伸長 ui->groupBox->setLayout(ui->verticalLayout_2);//新增垂直部件 //ScrollArea捲動視窗容器 ui->label_11->setPixmap(QPixmap("C:/Users/SuJieYin/Pictures/Saved Pictures/2.png")); ui->scrollArea->setWidget(ui->label_11);//新增這個標籤元件 ui->horizontalLayout_3->addWidget(ui->scrollArea);//新增進水平部件 setLayout(ui->horizontalLayout_3);//顯示這個水平部件 //Tool Box工具箱 ui->toolBox->addItem(ui->textEdit_5,codec->toUnicode("工具1")); ui->toolBox->addItem(ui->textEdit_6,codec->toUnicode("工具2")); //TabWidget 索引標籤-分頁顯示 ui->tabWidget->setTabsClosable(true);//關閉 ui->tabWidget->addTab(ui->textEdit_7,"T"); ui->tabWidget->addTab(ui->textEdit_8,"B"); //點選X號後顯示對應的文字 connect(ui->tabWidget,&QTabWidget::tabCloseRequested,[&](int x){ ui->textEdit_7->append(QString::number(x).toUtf8()); ui->textEdit_8->append(QString::number(x).toUtf8()); }); //stackedWidget 堆疊視窗類 //本教學使用的就是這個部件,來達到上一頁和下一頁之間的切換,不在過多解釋 //MdiArea 多媒體視窗 ui->mdiArea->addSubWindow(ui->textEdit_9);//新增子視窗 ui->mdiArea->addSubWindow(ui->textEdit_10); ui->stackedWidget->setCurrentIndex(5); } //上一頁 void MainWindow::on_pushButton_17_clicked() { ui->stackedWidget->setCurrentIndex(4); }
物件和類的佈局和定義位置,位置很重要
檔案對話方塊,加密,顯示在第一頁
6大對話方塊在第二頁
按鈕類舉例
輸入小部件類和顯示文字部件類和滑動部件類
日期,文字方塊,圖片,gif圖
容器部件類使用舉例
在後期,我將QT全部學習內容,做成應用程式遊戲軟體,以軟體的形式活學活用,工程龐大,目前正在籌劃,盡情期待
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45