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种常用的对话框:

颜色对话框:头文件

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

文件对话框:头文件

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

字体对话框:头文件

bool ok;

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

if(ok)

ui->pushButton_2->setFont(font);

else

qDebug()<<"cancel";

输入对话框:头文件

boolok;

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

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

消息对话框:头文件

    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);//提示对话框

进度对话框:头文件

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

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("拷贝完成");

错误信息对话框:头文件

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

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

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

向导对话框:头文件

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()

}

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

{

qDebug()<<"right";

qDebug()

}

}

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

   }

}

你可能感兴趣的:(Qt常用函数1)