国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于C++的QT基礎教程學習筆記

這篇具有很好參考價值的文章主要介紹了基于C++的QT基礎教程學習筆記。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

文章目錄:

來源

教程社區(qū)?

一:QT下載安裝

二:注意事項

1.在哪里寫程序

2.如何看手冊

3.技巧

三:常用函數(shù)

1.窗口?

2.相關?

3.按鈕

4.信號與槽函數(shù)?

5.常用欄?

菜單欄?

工具欄?

狀態(tài)欄

6.鉚接部件

7.文本編輯

8.背景圖

9.UI界面設計

10.常用對話框

11.實現(xiàn)界面的跳轉(zhuǎn)

12.常用控件?

QLabel標簽

QLineEdit文本編輯框

自定義控件使用

棧容器:設置點擊按鈕切換窗口

13.常用事件?

事件處理?

事件過濾器?

14.繪畫

15.QT添加視頻播放、QT添加背景音樂

16.QT數(shù)據(jù)庫Mysql操作

四:常見錯誤

1.QT解決中文亂碼

2.添加 "plainTextEdit" 成員變量到 "Ui::MainWindow" 類中

3.DirectShowPlayerService::doRender: Unresolved error code 0x80040266

4.DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 ()

5.error: C1060: 編譯器的堆空間不足

6.file not recognized: File format not recognized

7. QMYSQL driver not loaded;QSQLITE QODBC QODBC3 QPSQL QPSQL7


來源

知識點來源:總統(tǒng)來說講的可以,但是會有一些錯誤需要自己去解決

教程社區(qū)?

教程:Qt 快速入門系列教程、Qt參考文檔、Qt5編程入門教程(charge)

社區(qū):QT開源社區(qū)

一:QT下載安裝

第一種 Qt Downloads
第二種?QT在線安裝Qt Downloads
第三種 QT一鍵下載
第四種 QT官方離線安裝包
第五種 QT利用常用鏡像下載??【看選擇鏡像決定速度】
第六種 QT直接下載??提取碼: vqzw【快】
第七章 QT利用鏡像在線安裝【快】 清華、 中科大、 中互信、 阿里云(等等 可以參考第五種里面的鏡像地址)

二:注意事項

1.在哪里寫程序

在widget.cpp中寫程序

2.如何看手冊

在QT Creator的幫助 或者 Assistant中利用索引? public function或public slots查看

3.技巧

創(chuàng)建類名:第一個字母大寫

ctrl +i :代碼自動對齊

alt + enter:可以進行跳轉(zhuǎn)

三:常用函數(shù)

1.窗口?

//修改名字
this->setWindowTitle ("第一個窗口");


//設置窗口
this->resize(800,600);


//設置固定大小
    this->setFixedSize(500,500);

2.相關?

    //打印函數(shù)  #include <QDebug>
    qDebug<<"";



    //Lamdba表達式用于定義并創(chuàng)建匿名的函數(shù)對象,來簡化編程工作 [](){}
    // 無mutable那么參數(shù)就會報錯

3.按鈕

    //按鈕
    #include <QPushButton> 

    //添加按按鈕方法一
    QPushButton  *button = new QPushButton;
    //button->show();
    //設置按鈕的父對象在窗口里面
    button->setParent(this);
        //設置按鈕位置
            button->move(100,100);
        //設置按鈕內(nèi)容
            button->setText("第一個按鈕");
        //設置按鈕大小
            button->setFixedSize(150,60);

    //添加按按鈕方法二
    QPushButton  *button1 = new QPushButton("第二個按鈕",this);

4.信號與槽函數(shù)?

    //信號和槽  n+其他   發(fā)送介紹   可以嵌套聯(lián)動
    connect(sender, signal, receiver, slot);

    QPushButton  *button1 = new QPushButton("第二個按鈕",this);
    //信號與槽實現(xiàn)點擊按鈕關閉窗口
    connect(button1,&QPushButton::clicked,this,&Widget::close);
    //a.信號在.h文件的signals下面聲明返回類型和函數(shù)void hungury(),槽函數(shù)在.h文件的public slots下面聲明返回類型和函數(shù)void treat()
    //b.在.cpp文件中定義聲明的函數(shù) void Student::treat(){qDebug()<<"請吃飯"}    void Teacher::hungury(){qDebug()<<"老師餓"}
    //c.在widget.h的public下面定義對象,并導入對象的頭文件Teacher *tea;student *stu;  include "teacher.h" #include "student.h"
    //d.在widget.cpp中創(chuàng)建對象this- >tea = new Teacher();this- >stu =new Student();調(diào)用連接函數(shù)connect(tea,&Teacher: : hungury,stu,&Student: :treat);后面調(diào)用Classover()
    //e.在widget.h的public下面聲明觸發(fā)事件void Classover()、在widget.cpp中定義觸發(fā)事件發(fā)送void Widget::Classover(){emit teacher->hungury();}
    
    //如果有參數(shù)且重載了,需要利用函數(shù)指針指向函數(shù)地址,然后在做連接
    //    void ( Teacher : : *teachersignal) (Qstring)= &Teacher : : hungury;
    //    void (student : : *studentslot)(Qstring)= &student : :treat;
    //    connect(tea , teachersignal,stu ,studentslot) ;

5.常用欄?

菜單欄?

//創(chuàng)建菜單欄
#include <QMenuBar>
//創(chuàng)建菜單
#include <QMenu>
//創(chuàng)建菜單項 子菜單
#include <QAction>



   //創(chuàng)建菜單欄
        //QMenuBar *menubar = new QMenuBar(this);
        //this->setMenuBar(menubar);
        QMenuBar *menubar = menuBar();
        this->setMenuBar(menubar);
    //創(chuàng)建菜單
    QMenu *menu1 = new QMenu("文件");
    QMenu *menu2 = new QMenu("編輯");
    QMenu *menu3 = new QMenu("構建");
    //添加菜單進去
    menubar->addMenu(menu1);
    menubar->addMenu(menu2);
    menubar->addMenu(menu3);

    //創(chuàng)建菜單項子菜單
    QAction *act1 = new QAction("打開文件");
    QAction *act2 = new QAction("關閉文件");
    QAction *act3 = new QAction("另存文件");
    //把子菜單添加到菜單
    menu1->addAction(act1);
    menu2->addAction(act2);
    menu3->addAction(act3);

    //實現(xiàn)點擊關閉窗口
    connect(act2,&QAction::triggered,this,&QMainWindow::close);

工具欄?

//創(chuàng)建工具欄
#include <QToolBar>



   //創(chuàng)建工具欄
    QToolBar *toolbar = new QToolBar(this);
    //把工具欄添加到窗口中
    this->addToolBar(toolbar);
        //this->addToolBar(Qt::LeftToolBarArea,toolbar);
    //給工具欄添加類容
    toolbar->addAction(act1);
    toolbar->addAction(act2);
    toolbar->addAction(act3);
    QAction *act4 = new QAction("工具");
    toolbar->addAction(act4);

    //修改工具欄不可移動 默認是可以移動的
    //toolbar->setMovable(false);

    //設置停靠區(qū)域
    //        Qt:: LeftToolBarArea
    //        ??吭谧髠?    //        Qt ::RightToolBarArea
    //        停靠在右側
    //        Qt::TopToolBarArea
    //        ??吭陧敳?    //        Qt :: BottomToolBarArea
    //        ??吭诘撞?    //        Qt ::Al1ToolBarAreas
    //        以上四個位置都可停靠
    toolbar->setAllowedAreas (Qt::LeftToolBarArea | Qt::RightToolBarArea);//需要在addToolBar指定具體位置

    //設置工具欄的浮動狀態(tài)    默認可懸浮窗口
    //toolbar->setFloatable(false);

狀態(tài)欄

//創(chuàng)建狀態(tài)欄
#include <QStatusBar>
//狀態(tài)欄信息
#include <QLabel>



    //創(chuàng)建狀態(tài)欄
    QStatusBar *statusbar = statusBar();
        //QStatusBar *statusbar = new QStatusBar(this);
    //把狀態(tài)欄放到窗口上去
    this->setStatusBar(statusbar);

    //增加信息
        //臨時信息,如果有臨時會覆蓋正式
        statusbar->showMessage("頁面顯示成功",1000);
        //正式信息 左側
        QLabel *label1 = new QLabel("打開打開",this);
        statusbar->addWidget(label1);
        //永久信息 右側
        QLabel *label2 = new QLabel( "www.baidu.com",this);
        statusbar->addPermanentWidget(label2);

6.鉚接部件

//鉚接部件
#include <QDockWidget>



    //創(chuàng)建鉚接部件(浮動窗口)
    QDockWidget *dockwidget = new QDockWidget("鉚接部件",this);
    //添加到窗口當中
    this->addDockWidget(Qt::TopDockWidgetArea,dockwidget);

7.文本編輯

//核心部件(中心部件)
#include <QTextEdit>



    //核心部件(中心部件)
    //文本編輯記事本
    QTextEdit *edit = new QTextEdit("文本編輯",this);
    this->setCentralWidget(edit);

8.背景圖

要添加資源文件resources,路徑放在項目的同目錄下



//背景圖片
   //聲明部件
   QWidget *widget = new QWidget();
   widget->setAutoFillBackground(true);//鋪滿

   //定義畫板
   QPalette palette;
   //定義照片
   QPixmap pixmap(":/images/gass.png");
   //把照片印刷到畫板
   palette.setBrush(QPalette::Window, QBrush(pixmap));
   
   widget->setPalette(palette);
   widget->show();




//給菜單項加載圖片
    //創(chuàng)建圖片控件
    QPixmap pix;
    //選擇圖片
    pix.load(":/image/add.png");
    //給菜單項設置圖片
    act1->setIcon(QIcon(pix));

9.UI界面設計

首先要勾選ui創(chuàng)建的時候

第一種:直接在forms的mainwindow.ui中進行拖拽添加(感覺有點像DW)

第二種:代碼添加
        //比如 添加一個狀態(tài)欄
        this->resize(800,600);
        ui->setupUi(this);
        statusBar()->showMessage("顯示成功",3000);

10.常用對話框

//對話框
#include "QDialog"




       //模態(tài)對話框  會阻塞其他
        QDialog dialog;
        dialog.setWindowTitle(tr("Hello, dialog!"));
        dialog.exec();

        //非模態(tài)對話框
            //QDialog dialog(this);會被析構
            //dialog.setWindowTitle(tr("Hello, dialog!"));
            //dialog.show();
        QDialog *dialog = new QDialog;
        //dialog 使用 new 在堆上分配空間,卻一直沒有 delete,那么這里設置自動銷毀
        dialog->setAttribute(Qt::WA_DeleteOnClose);
        dialog->setWindowTitle(tr("Hello, dialog!"));
        dialog->show();
//文件對話框



#include "mainwindow.h"
#include "ui_mainwindow.h"

//對話框
#include "QDialog"
//文件對話框
#include "QFileDialog"
//打印
#include "QDebug"
//用于顯示純文本編輯框
#include "QPlainTextEdit"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
        this->resize(800,600);
        ui->setupUi(this);


        //標準對話框:內(nèi)置的一系列對話框
        //        ?QColorDialog:		選擇顏色;
        //        ?QFileDialog:			選擇文件或者目錄;
        //        ?QFontDialog:			選擇字體;
        //        ?QInputDialog:		允許用戶輸入一個值,并將其值返回;
        //        ?QMessageBox:			模態(tài)對話框,用于顯示信息、詢問問題等;
        //        ?QPageSetupDialog:	為打印機提供紙張相關的選項;
        //        ?QPrintDialog:		打印機配置;
        //        ?QPrintPreviewDialog:打印預覽;
        //        ?QProgressDialog:		顯示操作過程。

        ui->pushButton->setFixedSize(200,50);
        ui->pushButton_2->setFixedSize(200,50);
        //在按鈕出右鍵設置轉(zhuǎn)到槽,之后編輯邏輯代碼

}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    //父對象指針 文件對話框的標題 打開文件路徑 文件過濾器
    QString path = QFileDialog::getOpenFileName(this,tr("打開文件"), "./",tr("Text Files(*.txt);;Images(*.png *.jpg)"));

    QString fileName = "example.txt";
    QTextEdit *plainTextEdit = new QTextEdit(this);

    if (!fileName.isEmpty())
            //ui->plainTextEdit->appendPlainText("fileName");
            plainTextEdit->insertPlainText("Plain text to append");
}


void MainWindow::on_pushButton_2_clicked()
{
    //QTextEdit *plainTextEdit = new QTextEdit(this);
    QPlainTextEdit *editor = new QPlainTextEdit();
    QStringList filesName = QFileDialog::getOpenFileNames(this,"打開文件","./","Images (*.png *.xpm *.jpg)");
    for(int i=0;i<filesName.count();i++)
            //qDebug()<<filesName.at(i);
            //plainTextEdit->insertPlainText(filesName.at(i));
              editor->appendPlainText(filesName.at(i));
}
//顏色對話框



#include "mainwindow.h"
#include "ui_mainwindow.h"

//對話框
#include <QDialog>
//文件對話框
#include <QFileDialog>
//打印
#include <QDebug>
//用于顯示純文本編輯框
#include <QPlainTextEdit>
//顏色對話框
#include <QColorDialog>

#include <QPalette>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
        setFixedSize(800,600);
        ui->setupUi(this);


        // 創(chuàng)建 plainTextEdit 對象
        plainTextEdit = new QPlainTextEdit(this);
        // 設置 plainTextEdit 的大小和位置
        plainTextEdit->setGeometry(100, 100, 300, 200);
        // 將 plainTextEdit 添加到窗口中
        this->setCentralWidget(plainTextEdit);

        ui->pushButton_3->setFixedSize(200,50);
        //在按鈕出右鍵設置轉(zhuǎn)到槽,之后編輯邏輯代碼
        this->plainTextEdit->setFixedSize(400,400);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_3_clicked()
{
        //QPalette pal = ui->plainTextEdit->palette();//獲取現(xiàn)有palette
    QPalette pal = this->plainTextEdit->palette();//獲取現(xiàn)有palette
    QColor iniColor = pal.color(QPalette::Text);//現(xiàn)有文字顏色
    QColor color = QColorDialog::getColor(iniColor,this,"選擇顏色");
    //判斷選擇顏色是否有效,如果有效設置編輯器字體顏色
    if(color.isValid()){
        pal.setColor(QPalette::Text,color);
        this->plainTextEdit->setPalette(pal);
    }
}

常用對話框?

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QDebug>
#include <QFileDialog>
#include <QColorDialog>
#include <QFontDialog>
#include <QPalette>
#include <QMessageBox>
#include <QInputDialog>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    setFixedSize(800,600);
    ui->setupUi(this);

    // 創(chuàng)建 plainTextEdit 對象
    plainTextEdit = new QPlainTextEdit(this);
    // 設置 plainTextEdit 的大小和位置
    plainTextEdit->setGeometry(100, 100, 300, 200);
    // 將 plainTextEdit 添加到窗口中
    this->setCentralWidget(plainTextEdit);


    ui->pushButton->setFixedSize(200,30);
    ui->pushButton_2->setFixedSize(200,30);
    ui->pushButton_3->setFixedSize(200,30);
    ui->pushButton_4->setFixedSize(200,30);
    ui->pushButton_5->setFixedSize(200,30);
    ui->pushButton_6->setFixedSize(200,30);
    this->plainTextEdit->setFixedSize(400,400);

}


//文件對話框
MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{

    QString fileName = QFileDialog::getOpenFileName(this, tr("打開文件"),"./", tr("Images (*.png *.xpm *.jpg);;Text (*.txt)"));
    if(!fileName.isEmpty())
         this->plainTextEdit->appendPlainText(fileName);
}


//文件對話框
void MainWindow::on_pushButton_2_clicked()
{
    QStringList filesName = QFileDialog::getOpenFileNames(
                             this,
                             "打開文件",
                             "./",
                             "Images (*.png *.xpm *.jpg)");
    for(int i=0;i<filesName.count();i++)
    {
        //qDebug()<<filesName.at(i);
         this->plainTextEdit->appendPlainText(filesName.at(i));
    }
}


//顏色對話框
void MainWindow::on_pushButton_3_clicked()

{
    QPalette pal = this->plainTextEdit->palette();//獲取現(xiàn)有palette
    QColor iniColor = pal.color(QPalette::Text);//現(xiàn)有文字顏色
    QColor color = QColorDialog::getColor(iniColor,this,"選擇顏色");
    //判斷選擇顏色是否有效,如果有效設置編輯器字體顏色
    if(color.isValid()){
        pal.setColor(QPalette::Text,color);
        this->plainTextEdit->setPalette(pal);
    }
}


//字體對話框
void MainWindow::on_pushButton_4_clicked()
{
    bool ok;
    QFont iniFont = this->plainTextEdit->font();//獲取原有文本框字體
    QFont font = QFontDialog::getFont(&ok, iniFont, this);
    if (ok) {//如果ok=true
       this->plainTextEdit->setFont(font);
    }
}


//消息對話框
void MainWindow::on_pushButton_5_clicked()
{
    //錯誤彈窗
    //QMessageBox::critical(this,"錯誤消息對話框","程序出現(xiàn)錯誤");
    //警告彈窗
   // QMessageBox::warning(this,"警告消息對話框","程序出現(xiàn)警告");
    //消息彈窗
   // QMessageBox::information(this,"消息對話框","程序一切正常",QMessageBox::Ok,QMessageBox::NoButton);
    //消息選擇彈窗
    QMessageBox::StandardButton result;
    result=QMessageBox::question(this,"選擇消息框","文件已修改,是否保存",QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,QMessageBox::NoButton);
    if(result==QMessageBox::Yes)
    qDebug()<<"正在保存";
    else if(result==QMessageBox::No)
    qDebug()<<"不保存";
    else qDebug()<<"取消操作";
}


//輸入對話框
void MainWindow::on_pushButton_6_clicked()
{
    //生成輸入文字對話框
    bool ok;
    QString text = QInputDialog::getText(this, tr("輸入文字對話框"),tr("請輸入文字"), QLineEdit::Normal,"demo", &ok);
    if (ok && !text.isEmpty())
    this->plainTextEdit->appendPlainText(text);
}

11.實現(xiàn)界面的跳轉(zhuǎn)

要新建一個QT設計師界面類窗口

效果圖

頁面跳轉(zhuǎn)

界面

基于C++的QT基礎教程學習筆記,#  C++,qt,學習,開發(fā)語言基于C++的QT基礎教程學習筆記,#  C++,qt,學習,開發(fā)語言基于C++的QT基礎教程學習筆記,#  C++,qt,學習,開發(fā)語言

mainwindow.h

//導入需要跳轉(zhuǎn)的界面
#include "form.h"


private:
    Ui::MainWindow *ui;
    //實例化一個窗口
    Form *new_window;
};

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    this->new_window = new Form();

    //從登陸界面跳轉(zhuǎn)
    connect(ui->pushButton,&QPushButton::clicked,this,[=](){
        this->hide();//登陸界面隱藏
        this->new_window->show();//主界面顯示
    });

    //從主界面跳轉(zhuǎn)
    connect(this->new_window,&Form::back,this,[=](){
        this->new_window->hide();//主界面隱藏
        this->show();//登陸界面顯示
    });
}

??form.h

private:
    Ui::Form *ui;

//返回去要發(fā)送信號  只是聲明,不需要定義實現(xiàn)
signals:
    void back(void);
};

?form.cpp

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);

    //點擊返回按鈕,跳轉(zhuǎn)回到登陸界面
    connect(ui->pushButton,SIGNAL(clicked(bool)),this,SIGNAL(back()));
}

12.常用控件?

QLabel標簽

#include "widget.h"
#include "ui_widget.h"

//標簽
#include <QLabel>
//動畫
#include <QMovie>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //定義一個對象
    QLabel *label = new QLabel(this);
    
    
    //顯示文字
    label->setText("這是代碼實現(xiàn)的標簽");
    
    //顯示超鏈接
    ui->label1->setText("<h1><a href=\"https://www.baidu.com\">百度</a></h1>";
    ui->label1->setOpenExternalLinks(true);//設置連接可以自動打開

    //顯示圖片
    QPixmap pixmap;
    pixmap.load(":/image/cat.png");
    ui->label_image->setPixmap(pixmapp);
    
    //顯示動圖
    QMovie *movie = new QMovie( ":/image/cat.gif");
    ui->label_gif->setMovie(movie) ;
    movie->start();
        //點擊按鈕暫停
        connect(ui->pushButton,&QPushButton: :clicked,this,[=](){
            movie->stop();
        });
        

}


Widget::~Widget()
{
    delete ui;
}

QLineEdit文本編輯框

#include "widget.h"
#include "ui_widget.h"

//文本編輯框
#include <QLineEdit>
#include <QDebug>



Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //定義創(chuàng)建一個編輯框
    QLineEdit *edit =new QLineEdit(this);
    //設置內(nèi)容
    edit->setText("這是代碼創(chuàng)建的編輯框");
    //獲取信息
    QString str = ui->lineEdit->text();
    qDebug()<<str;
    //    ?QLineEdit::Normal	 模式顯示方式,按照輸入的內(nèi)容顯示。
    //    ?QLineEdit::NoEcho	不顯示任何內(nèi)容,此模式下無法看到用戶的輸入。
    //    ?QLineEdit::Password	密碼模式,輸入的字符會根據(jù)平臺轉(zhuǎn)換為特殊字符。
    //     QLineEdit::PasswordEchoOnEdit	編輯時顯示字符否則顯示字符作為密
    //給編輯框輸入信息設置密碼模式
    ui->lineEdit->setEchoMode(QLineEdit::Password);
    //設置左 上 右 下保持距離
    ui->lineEdit->setTextMargins(100,0,0,0);
    
                 

}


Widget::~Widget()
{
    delete ui;
}

自定義控件使用

//自定義控件使用  新建一個設計界面類Form、右鍵選擇提升,把提升類名稱對應,勾選全局包含
    //form.cpp
        //數(shù)字改變跟著滑動
        connect(ui->spinBox,SIGNAL(valueChanged(int)),
             ui->horizontalslider,SLOT(setValue(int)));
        //滑動距離改變從而數(shù)字跟著改變
        connect(ui->horizontalslider,SIGNAL(valuechanged(int)),
                ui->spinBox,SLOT(setValue(int));
    //widget.cpp            
        //點擊按鈕就自動設置一半
         connect(ui->pushButton,SIGNAL(clicked(bool)) ,
             ui->widget,SLOT(setNum()));
    
    //form.h
        public slots:
            void setNum();
    
    
    //form.cpp
        void Form::setNum(){//類名加函數(shù)
            ui->horizontalslider->setValue(5ol ;
        }

棧容器:設置點擊按鈕切換窗口

#include "widget.h"
#include "ui_widget.h"



Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    //設置棧容器默認顯示窗口
    //新建2個設計界面類,主界面添加棧容器,里面分別進行提升
    ui->stackedWidget->setcurrentIndex(0);
    //點擊第一個按鈕跳轉(zhuǎn)界面
    connect(ui->pushButton ,&QPushButton::clicked,this,[=](){
        ui->stackedwidget->setcurrentIndex(0);
    });
    //點擊第二個按鈕跳轉(zhuǎn)界面
    connect(ui->pushButton_2,&QPushButton: :clicked,this,[=](){
        ui->stackedwidget->setcurrentIndex(1) ;
    });
    

}


Widget::~Widget()
{
    delete ui;
}

13.常用事件?

 事件
        事件經(jīng)過以下:事件派發(fā)----》事件過濾器----》事件分發(fā)---》事件處理階段。
        事件:系統(tǒng)或者Qt本身在不同的時刻發(fā)出的。
        事件循環(huán)開始: exec()函數(shù)。




事件處理有以下四個過程:

    事件處理:重寫鼠標按下事件、鼠標釋放事件,這個是最簡單的形式及功能。
    事件分發(fā):重新event函數(shù)。
    事件過濾:重寫eventFilter,過濾特定對象的事件,或者所有對象的所有事件(QCoreApplication:instance).
    事件派發(fā):(QCoreApplication::notify).

事件處理?

//重寫 widget.h
protected:
    void closeEvent(QCloseEvent *event);
    void resizeEvent(QResizeEvent *event);



//widget.cpp
#include "widget.h"
#include "ui_widget.h"

//彈窗
#include <QMessageBox>
//關閉事件
#include <QCloseEvent>
//打印
#include <QDebug>
//大小事件
#include <QResizeEvent>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);




}


Widget::~Widget()
{
    delete ui;
}

//重寫窗口關閉
void Widget::closeEvent(QCloseEvent *event)
{
    //彈出提示框
    int ret = QMessageBox::question(this,"提示", "您確定要關閉窗口嗎?");
    if(ret==QMessageBox::Yes)
    {
        event->accept();
    }
    else{
        event->ignore();
    }

}

//重寫窗口大小
void Widget::resizeEvent(QResizeEvent *event)
{
    qDebug()<<"oldsize="<<event->oldSize();
    qDebug()<<"newsize="<<event->size();

}
#include "mylabel.h"
#include <QDebug>
#include <QMouseEvent>
MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{
    this->setMouseTracking(true);//設置追蹤模式
}

void MyLabel::mousePressEvent(QMouseEvent *ev)
{

   if( ev->button() == Qt::LeftButton){
        qDebug()<<"鼠標左鍵按下了";
   }
   else if( ev->button() == Qt::RightButton)
   {
           qDebug()<<"鼠標右鍵按下了";
   }
   else{
       qDebug()<<"鼠標其他按下了";
   }
}

void MyLabel::mouseReleaseEvent(QMouseEvent *ev)
{
    qDebug()<<"在標簽上的鼠標釋放了";
}

void MyLabel::mouseMoveEvent(QMouseEvent *ev)
{
     qDebug()<<"鼠標移動"<<ev->x()<<","<<ev->y();
     QString str;
     str.sprintf("<center><h1>(%d ,%d)</h1></center>",ev->x(),ev->y());
     this->setText(str);

}

事件過濾器?

//事件過濾器

bool Mainwindow::eventFilter(Q0bject *obj,QEvent *event){
    if (obj == textEdit) {
        if (event->type() == QEvent: :KeyPress) {
            QKeyEvent *keyEvent = static_cast<QKeyEvent *> ( event);
            qDebug() <<"Ate key press" << keyEvent->key();
            return true;
        }else {
            return false;
        }
    }else 
    {
        //pass the event on to the parent class
        return QMainwindow : : eventFilter(obj,event);
    }
}
    

14.繪畫

QPainyer:畫筆

QPainterDevice:繪圖設備(紙張、墻壁)

QPaintEngine:畫筆(QPainter)在不同的設備上進行繪制的統(tǒng)一的接口(一般不考慮)
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QPaintEvent>
#include <QDebug>
//畫筆
#include <QPainter>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    this->setFixedSize(800,600);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void paintEvent(QPaintEvent *p){
    QPainter painter;
    painter.drawLine (80,100,500, 500);
    painter.setPen(Qt::red);
    painter.drawRect(0,0,400,200);
    painter.setPen(QPen(Qt::blue,5));
    painter.drawEllipse(0,0,400,20);


}

15.QT添加視頻播放、QT添加背景音樂

?.pro文件

QT       += core gui multimedia multimediawidgets
CONFIG += resources_big
QT +=multimedia

.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QtMultimedia/QtMultimedia>
#include <QtMultimediaWidgets/QVideoWidget>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    this->setFixedSize(800,600);

    //創(chuàng)建一個顯示視頻的控件
    QVideoWidget* videowin = new QVideoWidget(this );
    videowin->resize(400,300);
    //添加一個播放器
    QMediaPlayer* player = new QMediaPlayer(this);
    player->setVideoOutput(videowin);
    //視頻
    player->setMedia(QMediaContent(QUrl::fromLocalFile("F:/QT/demo06/page.mp4")));
    //音樂
    player->setMedia(QMediaContent(QUrl::fromLocalFile("F:/QT/demo06/mu.mp3")));
    player->setVolume(50);//音量
    //開始播放
    player->play();

}

MainWindow::~MainWindow()
{
    delete ui;
}

16.QT數(shù)據(jù)庫Mysql操作

QT連接Mysql數(shù)據(jù)庫

QTSQL數(shù)據(jù)庫:QSqlQuery查詢、查詢模型QSqlQueryModel、表格模型QSqlTableModel、關系表格模型QSqlRelationalTableModel?

四:常見錯誤

1.QT解決中文亂碼

在.pro文件后面加上
#pro文件中,解決中文亂碼
msvc {
      QMAKE_CFLAGS += /utf-8
      QMAKE_CXXFLAGS += /utf-8
}

如果還不行:在?工具->選項->文本編輯器->默認編碼改為UTF-8

2.添加 "plainTextEdit" 成員變量到 "Ui::MainWindow" 類中

您可以按照以下步驟將 "plainTextEdit" 成員變量添加到 "Ui::MainWindow" 類中:

1.打開 "ui_MainWindow.h" 文件,該文件是在 Qt Creator 中自動生成的。
2.在 "Ui::MainWindow" 類的定義中,找到一個未使用的成員變量聲明區(qū)域。
3.在該區(qū)域中添加以下代碼來聲明 "plainTextEdit" 成員變量:
    QPlainTextEdit *plainTextEdit;
4.保存文件并重新生成代碼。
5.在 "MainWindow.cpp" 文件中,在構造函數(shù)或初始化方法中,為 "plainTextEdit" 成員變量分配內(nèi)存并設置初始值,例如:
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // ...

    // 創(chuàng)建 plainTextEdit 對象
    plainTextEdit = new QPlainTextEdit(this);

    // 設置 plainTextEdit 的大小和位置
    plainTextEdit->setGeometry(100, 100, 300, 200);

    // 將 plainTextEdit 添加到窗口中
    this->setCentralWidget(plainTextEdit);
}

3.DirectShowPlayerService::doRender: Unresolved error code 0x80040266

解碼問題:安裝一個DirectShow解碼器 如:LAV?Filters?重新編譯運行

LAV Filters的下載地址如下:http://files.1f0.de/lavf/LAVFilters-0.65.exe

LAV 過濾器可在此處找到:?https://www.videohelp.com/software/LAV-Filters

4.DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 ()

路徑或者名稱問題:將視頻文件放在全英文且無空格的路徑下?修改路徑后重新編譯運行

5.error: C1060: 編譯器的堆空間不足

?.pro文件中添加
CONFIG += resources_big

6.file not recognized: File format not recognized

解決辦法:在項目里面選擇自己合適的型號?

查看型號

基于C++的QT基礎教程學習筆記,#  C++,qt,學習,開發(fā)語言

?修改自己項目型號

基于C++的QT基礎教程學習筆記,#  C++,qt,學習,開發(fā)語言

?基于C++的QT基礎教程學習筆記,#  C++,qt,學習,開發(fā)語言

7. QMYSQL driver not loaded;QSQLITE QODBC QODBC3 QPSQL QPSQL7

QT連接數(shù)據(jù)庫報錯-QT沒有mysql驅(qū)動的解決辦法SqlDatabase: QMYSQL driver not loadedQSqlDatabase: available drivers文章來源地址http://www.zghlxwxcb.cn/news/detail-604316.html

到了這里,關于基于C++的QT基礎教程學習筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C++ Qt框架開發(fā) | 基于Qt框架開發(fā)實時成績顯示排序系統(tǒng)(3) 保存表格數(shù)據(jù)

    C++ Qt框架開發(fā) | 基于Qt框架開發(fā)實時成績顯示排序系統(tǒng)(3) 保存表格數(shù)據(jù)

    對上兩篇篇的工作C++ Qt框架開發(fā)| 基于Qt框架開發(fā)實時成績顯示排序系統(tǒng)(1)-CSDN博客和C++ Qt框架開發(fā) | 基于Qt框架開發(fā)實時成績顯示排序系統(tǒng)(2)折線圖顯示-CSDN博客繼續(xù)優(yōu)化,增加一個 保存按鈕,用于保存成績數(shù)據(jù)。 1)在ui界面添加一個按鈕 ? ? ? ? 將其命名為saveBtn。

    2024年02月19日
    瀏覽(32)
  • Qt開發(fā)教程:C++與QML的交互

    Qt是一個功能強大的跨平臺應用程序開發(fā)框架,支持同時使用C++和QML來開發(fā)應用程序。通過C++與QML的交互,我們可以實現(xiàn)更靈活、更強大的應用程序。本文將詳細介紹如何在Qt中創(chuàng)建自定義對象、在QML端發(fā)送信號并綁定到C++端、在C++端發(fā)送信號并綁定到QML端、以及實現(xiàn)QML端直接

    2024年04月16日
    瀏覽(61)
  • Qt開發(fā)學習筆記02

    Qt開發(fā)學習筆記02

    重寫 mousePressEvent 方法 要在Qt中實現(xiàn)關機功能,你需要使用操作系統(tǒng)提供的相關函數(shù)或命令來執(zhí)行關機操作。由于不同操作系統(tǒng)之間的關機方式可能有所不同,下面我將為你提供針對不同操作系統(tǒng)的示例代碼。 Windows系統(tǒng) 也可使用下面方法 macOS系統(tǒng) 請注意,macOS系統(tǒng)需要使用

    2024年02月04日
    瀏覽(42)
  • 【Visual Studio】Qt 的實時繪圖曲線功能,使用 C++ 語言,配合 Qt 開發(fā)串口通信界面

    【Visual Studio】Qt 的實時繪圖曲線功能,使用 C++ 語言,配合 Qt 開發(fā)串口通信界面

    知識不是單獨的,一定是成體系的。更多我的個人總結和相關經(jīng)驗可查閱這個專欄:Visual Studio。 戰(zhàn)斗背景:做了個串口接收界面,用來接收傳輸過來的信號。但是光用數(shù)字顯示太單調(diào),需要用圖線顯示出來。 戰(zhàn)略目標:干掉它。 戰(zhàn)術路線:Qt 繪圖可以使用 Qt Charts,先了解

    2024年02月11日
    瀏覽(28)
  • C++QT教程3——手冊4.11.1自帶教程(筆記)——創(chuàng)建一個基于Qt Widget的應用程序

    C++QT教程3——手冊4.11.1自帶教程(筆記)——創(chuàng)建一個基于Qt Widget的應用程序

    本教程介紹如何使用Qt Creator創(chuàng)建一個小型Qt應用程序,名為Text Finder。它是Qt UI工具中Text Finder示例的簡化版本。應用程序的用戶界面是使用Qt Designer通過Qt小部件構建的。應用程序邏輯是通過使用代碼編輯器編寫的C++代碼。 選擇文件 新建文件或項目 應用程序 Qt Widgets應用程序

    2024年02月13日
    瀏覽(20)
  • 基于Qt5的圖像交互控件開發(fā)(C++實現(xiàn))

    基于Qt5的圖像交互控件開發(fā)(C++實現(xiàn))

    博主近期看到??礦M、halcon以及visionpro視覺軟件都包含一個圖像智能交互控件,然后近期根據(jù)其中的技術原理,也基于Qt5仿照開發(fā)了一個類似的功能,包含矩形、旋轉(zhuǎn)矩形、任意多邊形、圓、圓環(huán)、扇環(huán),直線卡尺以及圓卡尺等常用控件,圖像智能交互是在計算機視覺領域中

    2024年02月05日
    瀏覽(65)
  • 【Visual Studio】使用 C++ 語言,配合 Qt,開發(fā)了一個串口通信界面

    【Visual Studio】使用 C++ 語言,配合 Qt,開發(fā)了一個串口通信界面

    知識不是單獨的,一定是成體系的。更多我的個人總結和相關經(jīng)驗可查閱這個專欄:Visual Studio。 我要使用的功能比較簡單,主要包含掃描串口、打開串口、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、暫停按鈕、停止按鈕,因此接下里將圍繞這幾個功能依次更新。 我的工程項目名字叫 “GUI”。

    2024年02月11日
    瀏覽(20)
  • 【Visual Studio】報錯 C2653,使用 C++ 語言,配合 Qt 開發(fā)串口通信界面

    【Visual Studio】報錯 C2653,使用 C++ 語言,配合 Qt 開發(fā)串口通信界面

    知識不是單獨的,一定是成體系的。更多我的個人總結和相關經(jīng)驗可查閱這個專欄:Visual Studio。 這個 Bug 是我做這個工程時遇到的:【Visual Studio】Qt 的實時繪圖曲線功能,使用 C++ 語言,配合 Qt 開發(fā)串口通信界面。 使用 C++ 語言,配合 Qt 開發(fā)串口通信界面,在添加 Widget 做

    2024年02月11日
    瀏覽(31)
  • 【QT開發(fā)筆記-基礎篇】| 第四章 事件QEvent | 4.5 鍵盤事件

    【QT開發(fā)筆記-基礎篇】| 第四章 事件QEvent | 4.5 鍵盤事件

    本章要實現(xiàn)的整體效果如下: QEvent::KeyPress ? 鍵盤按下時,觸發(fā)該事件,它對應的子類是 QKeyEvent QEvent::KeyRelease ? 鍵盤抬起時,觸發(fā)該事件,它對應的子類是 QKeyEvent 本節(jié)通過兩個案例來講解這 2 個事件: 鍵盤按下、釋放事件的基本使用 通過鍵盤的上下左右箭頭,控制標簽

    2024年02月07日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包