天天看点

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

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

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

1. QLabel

定义

QLabel* m_labelOrdered = newQLabel("0", this);      

对文字的左右对齐设置

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

定义和赋值

QPixmap pix;
pix.load("images/typebutton.PNG");
QPixmappix("images/typebutton.PNG");
QPixmap pix = newQPixmap("images/typebutton.PNG");      

3. QString

给QString赋值

QString s = “sss”;      

也可以:

s.sprintf(“sss %d”, 2);      

int转换成QString:

int i=0;
//静态函数的方法
QString s = QString::number(i, 10);//10表示10进制,也可以不写,默认就是10进制      

//非静态函数的方法

QString::setNum ( ulong n, int base = 10 )      

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

(3) float、double转换成QString

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

QString QString::number ( double n, char f= 'g', int prec = 6 )      

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

4. QLineEdit

密码框的实现

QLineEdit,将echoMode属性设置成:Password

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

5. QDialog

动态定义、弹出对话框

qt对话框类是

QDialog (QWidget * parent = 0, const char * name = 0, bool modal = FALSE, WFlags f = 0 )      

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

f:指窗口的样式。

如:

DDishDetailForm *dishDetailForm = newDDishDetailForm( this->parentWidget(),      
"dishdetailform",      
TRUE,WStyle_Customize | WStyle_NoBorder);      

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

弹出对话框,可以用:

dishDetailForm->show();//显示的模式按照对应的为准      

也可以用:

dishDetailForm->exec();//则无论定义的modal设置的是什么,都按照模式对话框显示      

使用QTDesigner导航生成的Form

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

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

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

6. QComboBox

属性设置

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

comboBox->setSizeLimit(5); //5行      

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

m_comboBox->listBox()->setColumnMode(QListBox::Variable);//默认即是
m_comboBox->listBox()->setVariableWidth(true);//使下拉列表的宽度可变
m_comboBox->listBox()->setRowMode(QListBox::FitToHeight);//行数和下拉的高度一致(不出现滚动条)
chartTypeTextLabel->setBuddy(chartTypeComboBox );      

7. QDate、 QTime and QDateTime

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

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

方法:

currentDataTime()      

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

QString ss =(QDateTime::currentDateTime()).toString("yyyy-MM-dd hh:mm:ss");      

9. QProgressDialog

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

#include <qapplication.h>
int NumRows = 10;
QProgressDialog progress(tr("Savingfile..."), tr("Cancel"), NumRows);
progress.setModal(true);
for (int row = 0; row < NumRows; ++row){
   progress.setProgress(row);
   qApp->processEvents();
   if (progress.wasCanceled()) {
       //dosomething
       return;
    }
}      

说明:

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

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

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

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

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