您的位置:首页 > 编程语言 > Qt开发

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

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

1. QLabel

定义

[cpp] view
plaincopy





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

对文字的左右对齐设置

[cpp] view
plaincopy





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
plaincopy





QPixmap pix;

pix.load("images/typebutton.PNG");

QPixmappix("images/typebutton.PNG");

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

3. QString

给QString赋值

[cpp] view
plaincopy





QString s = “sss”;

也可以:

[cpp] view
plaincopy





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



int转换成QString:

[cpp] view
plaincopy





int i=0;

//静态函数的方法

QString s = QString::number(i, 10);//10表示10进制,也可以不写,默认就是10进制

//非静态函数的方法

[cpp] view
plaincopy





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

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

(3) float、double转换成QString

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

[cpp] view
plaincopy





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

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



4. QLineEdit

密码框的实现

QLineEdit,将echoMode属性设置成:Password

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



5. QDialog

动态定义、弹出对话框

qt对话框类是

[cpp] view
plaincopy





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

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

f:指窗口的样式。

如:

[cpp] view
plaincopy





DDishDetailForm *dishDetailForm = newDDishDetailForm( this->parentWidget(),

[cpp] view
plaincopy





<span style="white-space:pre"> </span> "dishdetailform",

[cpp] view
plaincopy





<span style="white-space:pre"> </span>TRUE,WStyle_Customize | WStyle_NoBorder);

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

弹出对话框,可以用:

[cpp] view
plaincopy





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

也可以用:

[cpp] view
plaincopy





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



使用QTDesigner导航生成的Form

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

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

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



6. QComboBox

属性设置

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

[cpp] view
plaincopy





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

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

[cpp] view
plaincopy





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为例,说明获取当前时间的使用方法。

方法:

[cpp] view
plaincopy





currentDataTime()

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

[cpp] view
plaincopy





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



9. QProgressDialog

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

[cpp] view
plaincopy





#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的控件类的完整继承图:






FROM: http://blog.csdn.net/itcastcpp/article/details/39049255?utm_source=tuicool&utm_medium=referral
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: