Qt入门(4)——Qt常见控件

本文详细介绍了Qt中常用控件及对话框的使用方法,包括QLabel、QPixmap、QString、QLineEdit、QDialog、QComboBox、QDate、QTime、QDateTime和QProgressDialog。重点讲解了控件的基本属性设置、对话框的动态定义与弹出方法,以及如何通过Qt处理时间操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt提供了大量的内建控件及通用对话框可满足程序员的绝大部分要求。我们将对这些控件和对话框作一个大概的介绍。


1. QLabel

定义

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. QLabel* m_labelOrdered = newQLabel("0"this);  


对文字的左右对齐设置

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. m_labelOrdered->setAlignment(Qt::AlignLeft);//左对齐  


其它还有,横向对齐:

Qt::AlignAuto – 根据语言内容,大部分是左对齐。右对齐的有:阿拉伯语、希伯来(现代以色列)语

Qt::AlignLeft – 居左

Qt::AlignRight – 居右

Qt::AlignHCenter – 居中

Qt::AlignJustify – 两端对齐。并不是所有时候都有效,有时会被AlignAuto中断

竖向对齐:

Qt::AlignTop – 居顶

Qt::AlignBottom – 居底

Qt::AlignVCenter – 居中

同时只可以使用一个横向或竖向对齐方式。但是还有一个同时设置横竖方向的标记:

Qt::AlignCenter – 横竖都居中

 

 

2. QPixmap

定义和赋值

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. QPixmap pix;  
  2. pix.load("images/typebutton.PNG");  
  3. QPixmappix("images/typebutton.PNG");  
  4. QPixmap pix = newQPixmap("images/typebutton.PNG");  


3. QString

给QString赋值

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. QString s = “sss”;  


也可以:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. s.sprintf(“sss %d”, 2);  


 

int转换成QString:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. int i=0;  
  2. //静态函数的方法  
  3. QString s = QString::number(i, 10);//10表示10进制,也可以不写,默认就是10进制  


//非静态函数的方法

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. QString::setNum ( ulong n, int base = 10 )  


这两个函数同样使用于其他数字类型,如:uint, long, float, bouble等

(3) float、double转换成QString

同上面的函数相同,若想规定输出格式,则可通过参数设定。

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. QString QString::number ( double n, char f= 'g'int prec = 6 )   


setNum()也一样。f是表示输出的格式,prec是保留的小数位数,被截取的部分四舍五入。

 

4. QLineEdit

密码框的实现

QLineEdit,将echoMode属性设置成:Password

这样,输入的字符都是圆点显示

 

5. QDialog

动态定义、弹出对话框

qt对话框类是

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. QDialog (QWidget * parent = 0, const char * name = 0, bool modal = FALSE, WFlags f = 0 )  


modal:指是否模式对话框,也可以用setModal(bool)改变设置;

f:指窗口的样式。

如:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. DDishDetailForm *dishDetailForm = newDDishDetailForm( this->parentWidget(),  
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <span style="white-space:pre">  </span> "dishdetailform",   
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <span style="white-space:pre">  </span>TRUE,WStyle_Customize | WStyle_NoBorder);  


定义了一个DDishDetailForm的弹出窗口,模式对话框,无边框。

弹出对话框,可以用:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. dishDetailForm->show();//显示的模式按照对应的为准  


也可以用:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. dishDetailForm->exec();//则无论定义的modal设置的是什么,都按照模式对话框显示  

 

使用QTDesigner导航生成的Form

虽然导航生成的Form也是继承自QDialog,但是它封装了构造函数和析构函数。但是它分别在两个函数里默认调用了init()和destroy()两个函数。

所以要想做什么初始化的操作就定义一个init()函数,写在里面。

要想在析构函数里做什么就定义一个destroy()函数,写在里面。

 

6. QComboBox

属性设置

设置下拉的高度,高度是可见的item行数:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. comboBox->setSizeLimit(5); //5行  


如果不想使用滚动条,而是固定高度,横向扩展显示,则做下面设置即可:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. m_comboBox->listBox()->setColumnMode(QListBox::Variable);//默认即是  
  2. m_comboBox->listBox()->setVariableWidth(true);//使下拉列表的宽度可变  
  3. m_comboBox->listBox()->setRowMode(QListBox::FitToHeight);//行数和下拉的高度一致(不出现滚动条)  
  4. chartTypeTextLabel->setBuddy(chartTypeComboBox );  


 

 

7. QDate、 QTime and QDateTime

QT提供了三个日期时间方面的类:QDate、QTime、QDateTime。使用方法都差不多,也非常方便。三个类都包含在头文件<qdatetime.h>中。

以QDateTime为例,说明获取当前时间的使用方法。

方法:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. currentDataTime()  


因为是静态函数,所以不需要定义对象。返回的是QDateTime对象,若想转换成格式字符串,使用toString()函数即可。例子如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. QString ss =(QDateTime::currentDateTime()).toString("yyyy-MM-dd hh:mm:ss");   


 

9. QProgressDialog

我们处理耗费时间的操作时经常会用到滚动条。直接上代码:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #include <qapplication.h>  
  2. int NumRows = 10;  
  3. QProgressDialog progress(tr("Savingfile..."), tr("Cancel"), NumRows);  
  4. progress.setModal(true);  
  5. for (int row = 0; row < NumRows; ++row){  
  6.    progress.setProgress(row);  
  7.    qApp->processEvents();  
  8.    if (progress.wasCanceled()) {  
  9.        //dosomething  
  10.        return;  
  11.     }  
  12. }  


说明:

NumRows,进度条的总步数,QProgressDialog会根据这个数自动算出每一步走多少长度。

QApplication::processEvents()用来处理任何repaint事件(如,接受用户点击Cancel按钮)(但是好像不写这句也可以)。

我们不调用show()函数,是因为QProgressDialog自己已经做了。如果这个过程变得极短,则dialog根本不会被显示。

 

以下是Qt的控件类的完整继承图:

 

 

 

FROM:  http://blog.youkuaiyun.com/itcastcpp/article/details/39049255?utm_source=tuicool&utm_medium=referral




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值