Qt常用函數(shù)1

? ? ? ?Qt常用函數(shù)大全

以下有些函數(shù)有重載,需要時(shí)查閱Qt手冊(cè)使用。

QObject類中的函數(shù):

connect(信號(hào)指針,信號(hào)函數(shù)地址,槽指針,槽函數(shù)地址) //信號(hào)與槽

注1:函數(shù)名和&函數(shù)名的區(qū)別:都代表函數(shù)的入口地址,所以加不加都行.

注2:可用emit關(guān)鍵字觸發(fā)信號(hào)

QWidget類中的函數(shù):

void setFixedSize(int 長,int 寬)? //設(shè)置窗體不可改變大小

void setWindowTitle("名字")? //設(shè)置窗體名稱

bool? Close() //關(guān)閉窗口

void setAttribute(Qt::WidgetAttribute attribute, bool on = true) //暫時(shí)只用到下面一個(gè)功能 清除開辟的內(nèi)存空間

dialog->setAttribute(Qt::WA_DeleteOnClose);

QMainWindow中的函數(shù)

注:在所有函數(shù)中,一般能添加多個(gè)的用add,只能添加一個(gè)的用set開頭

MenuBar:菜單欄

void? setMenuBar(QMenuBar類型的指針)? //創(chuàng)建菜單欄。菜單欄只能有一個(gè) 所以用set

QMenu addMenu(標(biāo)題/圖標(biāo),標(biāo)題)? //添加菜單欄,可以添加多個(gè)選項(xiàng) 用add

創(chuàng)建菜單欄后,下一級(jí)函數(shù):

addAction(參數(shù)如下)? //作用是添加選項(xiàng)

addSeparator()? //作用是添加分隔符

ToolBar :工具欄

void addToolBar(位置(可默認(rèn)),QToolBar類型指針)? //作用是添加工具欄? 默認(rèn)在上方


addAction(。。。)和addSeparator()和上面一樣

StatusBar: 狀態(tài)欄

void setStatusBar(QStatusBar類型指針)? //創(chuàng)建狀態(tài)欄

void addWidget(Qwidget類型指針,默認(rèn)參數(shù)stretch=0)? 例如:

DockWidget:小窗口

void addDockWidgets(位置,QDockWidget類型指針)? //添加小窗口

CentralWidget: 中央窗口

void setCentralWidget(QWidget類型指針) //添加中央窗口? 例如:

設(shè)置圖標(biāo)

void setIcon(const QIcon &icon)? //設(shè)置圖標(biāo) 例:

QDialog中的函數(shù)

dialog->resize(400,300);// 窗口大小設(shè)置

dialog->setModal(true);// 模態(tài)非模態(tài)設(shè)置(模態(tài)就是必須先處理最前面的窗口)

dialog->show();//顯示

dialog->setAttribute(Qt::WA_DeleteOnClose);//delete開辟的空間 該函數(shù)是父類widget中的函數(shù)? 因?yàn)樽哟翱跁?huì)開辟內(nèi)存 但不關(guān)閉總窗口時(shí)不會(huì)自動(dòng)delete? 所以需要該函數(shù)delete

8種常用的對(duì)話框:

顏色對(duì)話框:頭文件<QColorDialog>

QColorcolor=QColorDialog::getColor(Qt::red,this);

文件對(duì)話框:頭文件<QFileDialog>

QStringfile=QFileDialog::getOpenFileName(this,"打開文件","C:\\","圖片文件(*.png *.jpg)");//可調(diào)整文件類型

字體對(duì)話框:頭文件<QFontDialog>

bool ok;

QFontfont=QFontDialog::getFont(&ok,this);

if(ok)

ui->pushButton_2->setFont(font);

else

qDebug()<<"cancel";

輸入對(duì)話框:頭文件<QInputDialog>

boolok;

//1. QString input = QInputDialog::getText(this,"輸入框","輸入什么",QLineEdit::Normal,"hello",&ok);

intintput=QInputDialog::getInt(this,"整數(shù)","",0,1,100,1,&ok);

消息對(duì)話框:頭文件<QMessageBox>

? ? QMessageBox::about(this,"關(guān)于","這里是Qt");//about 關(guān)于對(duì)話框

QMessageBox::critical(this,"錯(cuò)誤警告","你犯錯(cuò)了",

QMessageBox::Ok,QMessageBox::Cancel);//錯(cuò)誤對(duì)話框

intq=QMessageBox::question(this,"問題對(duì)話框","確認(rèn)有問題嗎?",QMessageBox::Ok,QMessageBox::Cancel);//問題對(duì)話框

if(q==QMessageBox::Ok)

qDebug()<<"你沒毛病";

else

qDebug()<<"你有問題";

QMessageBox::information(this,"信息框","這里是QTaaa",QMessageBox::Ok);//提示對(duì)話框

進(jìn)度對(duì)話框:頭文件<QProgressDialog>

注:無靜態(tài)成員函數(shù)? 需要?jiǎng)?chuàng)建對(duì)象或開辟內(nèi)存

QProgressDialogprogress("復(fù)制進(jìn)度","取消",0,50000,this);

progress.setWindowTitle("復(fù)制文件");

progress.setWindowModality(Qt::WindowModal);

progress.show();

for(inti=0;i<=50000;i++)

?? {

progress.setValue(i);

QCoreApplication::processEvents();//多線程,如大文件復(fù)制拷貝時(shí),可以繼續(xù)做其他事

if(progress.wasCanceled())

break;

if(i==49998)

progress.exec();

?? }

qDebug("拷貝完成");

錯(cuò)誤信息對(duì)話框:頭文件<QErrorMessage>

需要提前創(chuàng)建errordlg指針并開辟空間

errordlg->setWindowTitle("錯(cuò)誤提示");

errordlg->showMessage("錯(cuò)誤!");

向?qū)?duì)話框:頭文件<QWizard>

QWizardPage* createPage1()

{

QWizardPage*? page = new QWizardPage;

page->setTitle("頁面1");

return page;

}

QWizardPage* createPage2()

{

QWizardPage*? page = new QWizardPage;

page->setTitle("頁面2");

return page;

}

void MainWindow::on_pushButton_8_clicked()

{

QWizard wizard(this);

wizard.setWindowTitle("向?qū)ы?);

wizard.addPage(createPage1());

wizard.addPage(createPage2());

wizard.exec();

}

控件中的函數(shù)

QLable:

label->setText("名字") // 設(shè)置文本

ui->label->setText("this two picture hahahahahahahahahaha");

label->move(int長位置,int寬位置)? //設(shè)置label位置(UI里更方便)

ui->label->adjustSize();//自動(dòng)調(diào)整size

ui->label->setWordWrap(true);//在Label中實(shí)現(xiàn)自動(dòng)換行

ui->label_2->setPixmap(QPixmap(":/image/Image/car.png"));//顯示圖片信息

ui->label_2->setScaledContents(true);//改變圖片大?。ㄟm合label大?。?/p>

QMovie *mv = new QMovie(":/image/Image/lively_p.gif");

ui->label_3->setMovie(mv);//顯示動(dòng)圖

ui->label_3->setScaledContents(true);

mv->start();//動(dòng)圖開始播放

Button按鍵組:

toolButton中的常用函數(shù):

① void setIcon(QIcon(":+前綴+文件名"))? //設(shè)置圖標(biāo)

radioButton/checkBox:單選/多選

① void? setchecked(bool);

ListWidget :

文字對(duì)齊:void QListWidgetItem::setTextAlignment(int alignment)

例子:

ui->listWidget->addItem("nihao");

ui->listWidget->addItem("123");

QListWidgetItem *item = new QListWidgetItem("this is a ptr");

item->setTextAlignment(Qt::AlignRight);

ui->listWidget->addItem(item);

QStringList label1;

label1<<"haha"<<"sadasd"<<"s什么"<<"111";

ui->listWidget_2->addItems(label1);

Tree Widget

① 設(shè)置頭標(biāo)題:

void QTreeWidget::setHeaderLabels(const QStringList &*labels*)

//例如:

ui->treeWidget->setHeaderLabels(QStringList()<<"Name"<<"Address");

② 創(chuàng)建樹:

QTreeWidgetItem *item = new QTreeWidgetItem(QStringList()<<"文件1");//創(chuàng)建樹

ui->treeWidget->addTopLevelItem(item);

//void QTreeWidget::addTopLevelItem(QTreeWidgetItem *item)

item->setIcon(0,QIcon(":/image/car.png"));//設(shè)置圖標(biāo)

③ 創(chuàng)建子樹

QTreeWidgetItem *child1 =? new QTreeWidgetItem(QStringList()<<"child1"<<"child2");

QTreeWidgetItem *child2 =? new QTreeWidgetItem(QStringList()<<"child2"<<"child2");

item->addChild(child1);

item->addChild(child2);

//void QTreeWidgetItem::addChild(QTreeWidgetItem *child)

TableWidget

① 設(shè)置行列:

ui->tableWidget->setRowCount(3);

ui->tableWidget->setColumnCount(3);

② 設(shè)置頭標(biāo)簽:

? ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"name"<<"sex"<<"age");

③ 填充內(nèi)容:

QStringList? namelist;

namelist<<"rick"<<"aaa"<<"李平";

QStringList? sexlist;

sexlist<<"man"<<"woman"<<"man";

QStringList? agelist;

agelist<<"15"<<"20"<<"25";

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[i]));

// ui->tableWidget->setItem(i,col,new QTableWidgetItem(agelist[i])); //也可以

ui->tableWidget->setItem(i,col,new QTableWidgetItem(QString::number(20)));//int要轉(zhuǎn)成qstring

}

鼠標(biāo)事件

void Widget::mousePressEvent(QMouseEvent *event)//鼠標(biāo)按下

{

if(event->button()==Qt::LeftButton)//按下左鍵

{

qDebug()<<"left";

qDebug()<globalX()<<" "<globalY();//顯示坐標(biāo)

}

else if(event->button()==Qt::RightButton)//按下右鍵

{

qDebug()<<"right";

qDebug()<globalX()<<" "<globalY();

}

}

void Widget::mouseReleaseEvent(QMouseEvent *event)//鼠標(biāo)釋放

{

qDebug()<<"released";

}

void Widget:: mouseDoubleClickEvent(QMouseEvent *event)//雙擊

{

if(event->button()==Qt::LeftButton)

{

if(windowState()!=Qt::WindowFullScreen)

{

setWindowState(Qt::WindowFullScreen);//全屏

}

else

{

setWindowState(Qt::WindowNoState);//正常顯示

}

}

}

void Widget:: mouseMoveEvent(QMouseEvent *event)//鼠標(biāo)移動(dòng)

{

if(event->buttons()&Qt::LeftButton)//鼠標(biāo)按下拖動(dòng)

{

QPoint temp;

temp = event->globalPos()-pos;//找到當(dāng)前坐標(biāo) pos在頭文件中定義? QPoint類型

//pos(),是相對(duì)于窗口的,以窗口左上角為原點(diǎn)(去除邊框)。即pos()給出的是一個(gè)相對(duì)位置坐標(biāo)。而globalPos(),給出的是一個(gè)絕對(duì)坐標(biāo)。這里pos應(yīng)該是0,0所以可以不減? 效果一樣(可畫圖理解)

move(temp);//移動(dòng)到

}

}

void Widget::wheelEvent(QWheelEvent *event)//滾輪事件

{

if(event->delta()>0)//向前滾動(dòng)

{

ui->textEdit->zoomOut();//字體變小

}

else

{

ui->textEdit->zoomIn();

}

}

定時(shí)器

使用Timer的兩種方式:

//1 ? 創(chuàng)建指針、開辟空間、用信號(hào)和槽

{

ui->setupUi(this);

QTimer*timer=newQTimer(this);

timer->start(1000);

connect(timer,&QTimer::timeout,[&](){

staticintnum;

ui->label->setText(QString::number(num++));

? });


//2 用定時(shí)器事件

timer1=startTimer(500);

timer2=startTimer(2000);

}

voidWidget::timerEvent(QTimerEvent*event)

{

if(event->timerId()==timer1)

?? {

staticintnum2;

ui->label_2->setText(QString::number(num2++));

?? }

elseif(event->timerId()==timer2)

?? {

staticintnum3;

ui->label_3->setText(QString::number(num3++));

?? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 界面 主窗口界面設(shè)計(jì) 標(biāo)題欄:直接設(shè)Window-Title屬性;Window-icon屬性可加圖標(biāo)。底部狀態(tài)欄:...
    碼園老農(nóng)閱讀 3,970評(píng)論 1 13
  • 在使用控件布局的時(shí)候,用QFrame做容器,用的最多的就是垂直布局和水平布局,再加上垂直和水平的Spacer控件,...
    聯(lián)旺閱讀 866評(píng)論 0 0
  • QT學(xué)習(xí)筆記 1.對(duì)象樹:在Qt中,每個(gè) QObject 內(nèi)部都有一個(gè)list,用來保存所有的 children,...
    油炸花生米1閱讀 850評(píng)論 0 1
  • QT設(shè)計(jì)師 assistant 幫助手冊(cè) qmake -v 查看Qt版本 qmake -project 把項(xiàng)目源文...
    895b4a214172閱讀 397評(píng)論 0 1
  • 1 實(shí)驗(yàn)?zāi)康?目前計(jì)算機(jī)視覺技術(shù)已經(jīng)比較成熟,相關(guān)的開源項(xiàng)目與算法很多,可以將這些開源算法進(jìn)行整合,進(jìn)而做成一個(gè)小...
    YOUNG_FAN閱讀 7,068評(píng)論 0 50

友情鏈接更多精彩內(nèi)容