Qt常用函数1

       Qt常用函数大全

以下有些函数有重载,需要时查阅Qt手册使用。

QObject类中的函数:

connect(信号指针,信号函数地址,槽指针,槽函数地址) //信号与槽

注1:函数名和&函数名的区别:都代表函数的入口地址,所以加不加都行.

注2:可用emit关键字触发信号

QWidget类中的函数:

void setFixedSize(int 长,int 宽)  //设置窗体不可改变大小

void setWindowTitle("名字")  //设置窗体名称

bool  Close() //关闭窗口

void setAttribute(Qt::WidgetAttribute attribute, bool on = true) //暂时只用到下面一个功能 清除开辟的内存空间

dialog->setAttribute(Qt::WA_DeleteOnClose);

QMainWindow中的函数

注:在所有函数中,一般能添加多个的用add,只能添加一个的用set开头

MenuBar:菜单栏

void  setMenuBar(QMenuBar类型的指针)  //创建菜单栏。菜单栏只能有一个 所以用set

QMenu addMenu(标题/图标,标题)  //添加菜单栏,可以添加多个选项 用add

创建菜单栏后,下一级函数:

addAction(参数如下)  //作用是添加选项

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

ToolBar :工具栏

void addToolBar(位置(可默认),QToolBar类型指针)  //作用是添加工具栏  默认在上方


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

StatusBar: 状态栏

void setStatusBar(QStatusBar类型指针)  //创建状态栏

void addWidget(Qwidget类型指针,默认参数stretch=0)  例如:

DockWidget:小窗口

void addDockWidgets(位置,QDockWidget类型指针)  //添加小窗口

CentralWidget: 中央窗口

void setCentralWidget(QWidget类型指针) //添加中央窗口  例如:

设置图标

void setIcon(const QIcon &icon)  //设置图标 例:

QDialog中的函数

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

dialog->setModal(true);// 模态非模态设置(模态就是必须先处理最前面的窗口)

dialog->show();//显示

dialog->setAttribute(Qt::WA_DeleteOnClose);//delete开辟的空间 该函数是父类widget中的函数  因为子窗口会开辟内存 但不关闭总窗口时不会自动delete  所以需要该函数delete

8种常用的对话框:

颜色对话框:头文件<QColorDialog>

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

文件对话框:头文件<QFileDialog>

QStringfile=QFileDialog::getOpenFileName(this,"打开文件","C:\\","图片文件(*.png *.jpg)");//可调整文件类型

字体对话框:头文件<QFontDialog>

bool ok;

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

if(ok)

ui->pushButton_2->setFont(font);

else

qDebug()<<"cancel";

输入对话框:头文件<QInputDialog>

boolok;

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

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

消息对话框:头文件<QMessageBox>

    QMessageBox::about(this,"关于","这里是Qt");//about 关于对话框

QMessageBox::critical(this,"错误警告","你犯错了",

QMessageBox::Ok,QMessageBox::Cancel);//错误对话框

intq=QMessageBox::question(this,"问题对话框","确认有问题吗?",QMessageBox::Ok,QMessageBox::Cancel);//问题对话框

if(q==QMessageBox::Ok)

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

else

qDebug()<<"你有问题";

QMessageBox::information(this,"信息框","这里是QTaaa",QMessageBox::Ok);//提示对话框

进度对话框:头文件<QProgressDialog>

注:无静态成员函数  需要创建对象或开辟内存

QProgressDialogprogress("复制进度","取消",0,50000,this);

progress.setWindowTitle("复制文件");

progress.setWindowModality(Qt::WindowModal);

progress.show();

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

   {

progress.setValue(i);

QCoreApplication::processEvents();//多线程,如大文件复制拷贝时,可以继续做其他事

if(progress.wasCanceled())

break;

if(i==49998)

progress.exec();

   }

qDebug("拷贝完成");

错误信息对话框:头文件<QErrorMessage>

需要提前创建errordlg指针并开辟空间

errordlg->setWindowTitle("错误提示");

errordlg->showMessage("错误!");

向导对话框:头文件<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("向导页");

wizard.addPage(createPage1());

wizard.addPage(createPage2());

wizard.exec();

}

控件中的函数

QLable:

label->setText("名字") // 设置文本

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

label->move(int长位置,int宽位置)  //设置label位置(UI里更方便)

ui->label->adjustSize();//自动调整size

ui->label->setWordWrap(true);//在Label中实现自动换行

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

ui->label_2->setScaledContents(true);//改变图片大小(适合label大小)

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

ui->label_3->setMovie(mv);//显示动图

ui->label_3->setScaledContents(true);

mv->start();//动图开始播放

Button按键组:

toolButton中的常用函数:

① void setIcon(QIcon(":+前缀+文件名"))  //设置图标

radioButton/checkBox:单选/多选

① void  setchecked(bool);

ListWidget :

文字对齐: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

① 设置头标题:

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

//例如:

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

② 创建树:

QTreeWidgetItem *item = new QTreeWidgetItem(QStringList()<<"文件1");//创建树

ui->treeWidget->addTopLevelItem(item);

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

item->setIcon(0,QIcon(":/image/car.png"));//设置图标

③ 创建子树

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

① 设置行列:

ui->tableWidget->setRowCount(3);

ui->tableWidget->setColumnCount(3);

② 设置头标签:

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

③ 填充内容:

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要转成qstring

}

鼠标事件

void Widget::mousePressEvent(QMouseEvent *event)//鼠标按下

{

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

{

qDebug()<<"left";

qDebug()<globalX()<<" "<globalY();//显示坐标

}

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

{

qDebug()<<"right";

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

}

}

void Widget::mouseReleaseEvent(QMouseEvent *event)//鼠标释放

{

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)//鼠标移动

{

if(event->buttons()&Qt::LeftButton)//鼠标按下拖动

{

QPoint temp;

temp = event->globalPos()-pos;//找到当前坐标 pos在头文件中定义  QPoint类型

//pos(),是相对于窗口的,以窗口左上角为原点(去除边框)。即pos()给出的是一个相对位置坐标。而globalPos(),给出的是一个绝对坐标。这里pos应该是0,0所以可以不减  效果一样(可画图理解)

move(temp);//移动到

}

}

void Widget::wheelEvent(QWheelEvent *event)//滚轮事件

{

if(event->delta()>0)//向前滚动

{

ui->textEdit->zoomOut();//字体变小

}

else

{

ui->textEdit->zoomIn();

}

}

定时器

使用Timer的两种方式:

//1   创建指针、开辟空间、用信号和槽

{

ui->setupUi(this);

QTimer*timer=newQTimer(this);

timer->start(1000);

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

staticintnum;

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

  });


//2 用定时器事件

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++));

   }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容

  • 界面 主窗口界面设计 标题栏:直接设Window-Title属性;Window-icon属性可加图标。底部状态栏:...
    码园老农阅读 3,740评论 1 13
  • 在使用控件布局的时候,用QFrame做容器,用的最多的就是垂直布局和水平布局,再加上垂直和水平的Spacer控件,...
    联旺阅读 592评论 0 0
  • QT学习笔记 1.对象树:在Qt中,每个 QObject 内部都有一个list,用来保存所有的 children,...
    油炸花生米1阅读 651评论 0 1
  • QT设计师 assistant 帮助手册 qmake -v 查看Qt版本 qmake -project 把项目源文...
    895b4a214172阅读 328评论 0 1
  • 1 实验目的 目前计算机视觉技术已经比较成熟,相关的开源项目与算法很多,可以将这些开源算法进行整合,进而做成一个小...
    YOUNG_FAN阅读 6,689评论 0 50