目录存档: 翻译

20 2012

Qt4.8.0文档翻译:QNetworkProxy类参考,QNetworkProxy Class Reference

- no title specified


Qt4.8.0文档翻译:QNetworkProxy类参考,QNetworkProxy Class Reference

详细描述

QNetworkProxy类提供一個网络层的代理。

QNetworkProxy提供咯为 Qt 的那些网络相关的类配置网络层代理的方法。当前支持的类包括QAbstractSocketQTcpSocketQUdpSocketQTcpServerQNetworkAccessManagerQFtp。这個代理功能被设计成尽可能透明的。这句话的意思就是说,妳以前写过的网络程序应当在使用以下代码之后自动支持网络代理咯。

QNetworkProxy proxy;

proxy.setType(QNetworkProxy::Socks5Proxy);

proxy.setHostName(“proxy.example.com”);

proxy.setPort(1080);

proxy.setUser(“username”);

proxy.setPassword(“password”);

QNetworkProxy::setApplicationProxy(proxy);

除咯为整個程序设置代理之外,还可以使用QAbstractSocket::setProxy()和QTcpServer::setProxy()来为单個的套接字设置代理。可用以下代码来为特定的套接字禁用代理:

serverSocket->setProxy(QNetworkProxy::NoProxy);

如果在connectToHost()bind()listen()中使用的地址与QHostAddress::LocalHostQHostAddress::LocalHostIPv6等价,则不會使用网络代理。

每种类型的代理支持都有相应的限制。妳应当在选择使用某种代理类型之前仔细阅读ProxyType文档。

注意:对已连接的套接字,改变(代理)不起作用。如果妳想要改变已连接的套接字的代理,则应当重新连接它。

SOCKS5

Qt 4 中对 SOCKS5 的支持是基于RFC 1928RFC 1929的。所支持的认证模式是无认证和用户名/密码认证。同时支持IPv4 和IPv6。如果启用咯QNetworkProxy::HostNameLookupCapability,则域名是通过SOCKS5 服务器解析的,否则,就是在本地解析的,再将IP 发送到服务器。在妳将SOCKS5 用于QUdpSocketQTcpServer时,有些东西需要注意:

对于QUdpSocket,对bind()的调用可能會因超时而失败。如果传递给bind()的端口号不是0,则不能确保实际使用的端口号就是妳指定的端口号。使用localPort()localAddress()来获取实际使用的地址和端口号。由于使用咯代理的UDP 经过咯两个UDP 连接,所以更有可能被丢包。

对于QTcpServer,对listen()的调用可能因为超时而失败。如果传递给listen()的端口号不是0,则不能确保实际使用的端口号就是妳指定的端口号。使用serverPort()serverAddress()来获取实际用来监听连接的地址和端口号。SOCKS5中,对于listen()的每次调用,只支持接受一個连接,并且每次调用都可能會使用一個不同的serverPort()

参考QAbstractSocketQTcpServer

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2012/02/qt4-8-0%e6%96%87%e6%a1%a3%e7%bf%bb%e8%af%91%ef%bc%9aqnetworkproxy%e7%b1%bb%e5%8f%82%e8%80%83%ef%bc%8cqnetworkproxy-class-reference/

19 2012

Qt4.8.0文档翻译:QFontDatabase类参考,QFontDatabase Class Reference

- no title specified


Qt4.8.0文档翻译:QFontDatabase类参考,QFontDatabase Class Reference

成员函数文档

int QFontDatabase::addApplicationFont ( const QString & fileName ) [static]

载入名为fileName的文件中的字体,并且将它置入程序中。會返回一個编号(ID),该编号可用于:稍后使removeApplicationFont()用来删除該字体;获取該字体中包含的字体族列表。

如果該字体无法载入,则此函数返回-1。

当前只支持TrueType 字体、TrueType 字体集和OpenType 字体。

注意:目前,在Unix/X11 平台上添加程序字体需要有 fontconfig 才行。

注意:在Symbian中,字体族的名字會被裁剪到20 個字符。

此函数是从Qt 4.2 开始引入的。

参考addApplicationFontFromData()applicationFontFamilies()removeApplicationFont()。

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2012/02/qt4-8-0%e6%96%87%e6%a1%a3%e7%bf%bb%e8%af%91%ef%bc%9aqfontdatabase%e7%b1%bb%e5%8f%82%e8%80%83qfontdatabase-class-reference/

17 2012

Qt4.8.0文档翻译:QWidget类参考,QWidget Class Reference

- no title specified


Qt4.8.0文档翻译:QWidget类参考,QWidget Class Reference

属性文档

enabled : bool

这個属性控制的是此部件的启用状态。

一個处于启用状态的部件會处理键盘和鼠标事件;处于禁用状态的部件不會处理。

某些部件在处于禁用状态时會改变自己的外观。比如说,一個按钮可能會将它的标签变成灰色的。如果妳需要在部件的启用状态发生改变时得知这個改变信息,那么妳可以使用changeEvent()函数,并且处理QEvent::EnabledChange类型的事件。

禁用一個部件时會隐式都禁用它的所有子代部件。同样地,启用某個部件时,也會启用它的全部子代部件,除非某些子代部件曾被显式禁用过。

默认值是真(true)。

访问函数:

bool

isEnabled () const

void

setEnabled ( bool )

参考isEnabledTo()、QKeyEventQMouseEventchangeEvent()。

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2012/02/qt4-8-0%e6%96%87%e6%a1%a3%e7%bf%bb%e8%af%91%ef%bc%9aqwidget%e7%b1%bb%e5%8f%82%e8%80%83qwidget-class-reference/

09 2012

对QT中信号槽连接了解不够,导致逻辑错误

- no title specified


对QT中信号槽连接了解不够,导致逻辑错误

牵涉到的代码:

信号:

void MoneyChanged(qint32 NewMoney); //!<钱数已经改变。

成员函数:

/*!

*@brief 卖出当前货物。

*@param Good2Sell 当前要卖出的货物。

*/

void ShangHaiYanMoJi::SellGood(Good * Good2Sell)

{

QSpinBox * CrtSellSpinBox=0; //当前商品的卖出数量旋转框。

qint32 CrtPrice=0; //当前商品的价格。

Good * CrtGood=0; //当前商品。

qint32 EarnedMoney=0; //此次赚到的钱。

qint32 CrtAvePrice=0; //当前商品的平均进价。

CrtGood=Good2Sell; //当前商品的指针。

CrtPrice=CrtGood->GetPrice(); //获取当前商品的价格。

CrtSellSpinBox=CrtGood->GetSellSpinBox(); //获取卖出数量旋转框的指针。

if (CrtSellSpinBox->value()) //真正卖出咯东西,则进行结算。

{

CrtAvePrice=CrtGood->GetAvePrice(); //获取平均进价。

EarnedMoney=CrtSellSpinBox->value()*(CrtPrice-CrtAvePrice); //计算出赚到的钱数。

Money+=CrtSellSpinBox->value()*CrtPrice; //更新钱数。

emit MoneyChanged(Money); //钱数已经改变。

if (EarnedMoney>=0) //记录利润。

{

CrtGood->AddProfit(EarnedMoney); //记录利润。

} //if

else //记录亏损。

{

CrtGood->AddLose(EarnedMoney); //记录亏损。

} //else

CrtGood->AddTradeAmount(CrtSellSpinBox->value()); //记录交易量。

CrtGood->SubAmount(CrtSellSpinBox->value()); //减少存货。出货。

// CrtSellSpinBox->setMaximum(CrtSellSpinBox->maximum()-CrtSellSpinBox->value()); //设置新的最大值,这是在当前情况下能卖的商品个数。

// CrtAmountLcd=CrtGood->GetAmountLcd(); //获取商品存货数量二极管。

// CrtAmountLcd->display(CrtSellSpinBox->maximum()); //显示存货数量。

// ComputeBuySell(); //计算能买卖的货的个数。

//取出视口的矩形,将这个矩形向下移动一段距离,距离的值为当前滚动条的值。产生一个新的矩形,这个新的矩形就是用户当前实际看到的区域。

QRect CrtRect=ui->PlayScrollArea->viewport()->rect(); //取得视口的矩形。

CrtRect.moveTop(ui->PlayScrollArea->verticalScrollBar()->value()); //移动矩形。

qDebug() << __FILE__ << __LINE__ << __func__ << tr(“Scroll area height:”) << ui->PlayScrollArea->height(); //Debug.

qDebug() << __FILE__ << __LINE__ << __func__ << tr(“Scroll area widget height:”) << ui->PlayScrollArea->widget()->height(); //Debug.

if (Good2Sell->GetFrame()) //框架存在。

{

QuePourGold(Good2Sell); //将下泼金币动画添加到队列中。

PourGoldTimer.start(); //启动向下泼金币效果的定时器。

} //if

//创建“飞行文字”的队列:

QueFlyText(Good2Sell,EarnedMoney); //将飞行文字效果添加到队列中。

FlyTextTimer.start(); //启动飞行文字效果的定时器。

if (EarnedMoney>0) //是赚咯钱,则显示庆祝视频。

{

ShowCelibVideo(Good2Sell); //显示庆祝视频。

} //if

} //if

return;

} //void ShangHaiYanMoJi::SellGood(Good * Good2Sell)

信号槽:

/*!

*@brief 刷新总资产。

*@param NewDay 新的天数。

*/

void ShangHaiYanMoJi::RefreshAsset(qint32 NewDay)

{

(void)(NewDay); //不使用勒個参数。

Good * CrtGood=0; // 当前商品。

qint32 NewAsset=0; //新的总资产数。

foreach(CrtGood,GoodList) //一个个商品地计算。

{

NewAsset+=CrtGood->GetPrice()*CrtGood->GetAmount(); //加上当前商品的资产。

} //foreach

NewAsset+=Money; //加上现金。

//在二极管中显示资产数:

if (ui->AssetLcdNumber->checkOverflow(NewAsset)) //溢出。

{

qint32 DigitCount=ceil(log10(NewAsset)); //计算出位数。

if (NewAsset==pow(10,DigitCount)) //正好是10的幂.

{

DigitCount++; //再多一位。

} //if

ui->AssetLcdNumber->setDigitCount(DigitCount); //设置位数。

ui->AssetLcdNumber->updateGeometry(); //更新几何属性。

} //if

ui->AssetLcdNumber->display(NewAsset); //显示资产数。

emit AssetChanged(NewAsset); //发射信号,资产发生变化。

return;

} //void ShangHaiYanMoJi::RefreshAsset(qint32 NewDay)

连接:

connect(this,SIGNAL(MoneyChanged(qint32)),this,SLOT(RefreshAsset(qint32))); //当钱数发生改变时,刷新总资产。

预期的行为及错误:

在界面中“卖出”一定数量的某個商品时,对其进行处理的就是void ShangHaiYanMoJi::SellGood(Good * Good2Sell)函数。在这個函数中,會从界面上对应于该商品的“卖出数量”控件( QSpinBox * CrtSellSpinBox=0; //当前商品的卖出数量旋转框。,同时用来表示该商品当前有多少存货)里获取卖出的商品的数量,计算出这些数量的商品卖得的钱数,加到系统的现金数量( qint64 Money; //!<当前拥有的钱。)中去,再从界面上对应于该商品的“卖出数量”控件里减去要“卖出”的商品数量。同时发送信号( void MoneyChanged(qint32 NewMoney); //!<钱数已经改变。)以告知系统的现金总数发生变化。

由“钱数变化”信号(void MoneyChanged(qint32 NewMoney);)引发“更新资产数量”(void ShangHaiYanMoJi::RefreshAsset(qint32 NewDay))信号槽。在这個信号槽中會遍历所有种类的商品,获取其存货数量(通过前面所说的“卖出数量”控件),计算出其价值,加起来,再加上现金数量,即为系统中当前的总资产数。然后在界面上更新资产数。

本来由程序计算出来的资产数应当与由人来手动计算出的资产数相等,但是在实际调试中却不相等。程序计算出来的资产数总會多一些,而从具体的数值上来看,好像程序把刚“卖出”的商品计算咯两次一样。

出错原因:

根据出错的现象跟踪到void ShangHaiYanMoJi::SellGood(Good * Good2Sell)函数的代码中,就知道原因咯。具体的在这里:

EarnedMoney=CrtSellSpinBox->value()*(CrtPrice-CrtAvePrice); //计算出赚到的钱数。

Money+=CrtSellSpinBox->value()*CrtPrice; //更新钱数。

emit MoneyChanged(Money); //钱数已经改变。

if (EarnedMoney>=0) //记录利润。

{

CrtGood->AddProfit(EarnedMoney); //记录利润。

} //if

else //记录亏损。

{

CrtGood->AddLose(EarnedMoney); //记录亏损。

} //else

CrtGood->AddTradeAmount(CrtSellSpinBox->value()); //记录交易量。

CrtGood->SubAmount(CrtSellSpinBox->value()); //减少存货。出货。

其中,是最后的CrtGood->SubAmount(CrtSellSpinBox->value()); //减少存货。出货。这一句来将界面上的“卖出数量”控件的值减少的,此句代码位于发射“钱数改变”信号的代码(emit MoneyChanged(Money); //钱数已经改变。)之后。当执行到发射信号的代码时,钱数已经增加,而存货数量还没有减少。由于前面进行信号槽连接时没有指定连接方式,因此使用的是默认的自动连接模式,信号与信号槽本身又处于同一线程,在这种情况下,得到的是一個直接连接,也就是说信号槽在发射信号的语句执行时立即被调用。于是“更新资产”信号槽在存货数量还没有减少时便被调用,相当于将“卖出”的那么多的数量的商品再加咯一次。

验证咯一下,将发射信号的代码放到函数最后,变成下面的代码之后就计算正常咯:

/*!

*@brief 卖出当前货物。

*@param Good2Sell 当前要卖出的货物。

*/

void ShangHaiYanMoJi::SellGood(Good * Good2Sell)

{

QSpinBox * CrtSellSpinBox=0; //当前商品的卖出数量旋转框。

qint32 CrtPrice=0; //当前商品的价格。

Good * CrtGood=0; //当前商品。

qint32 EarnedMoney=0; //此次赚到的钱。

qint32 CrtAvePrice=0; //当前商品的平均进价。

CrtGood=Good2Sell; //当前商品的指针。

CrtPrice=CrtGood->GetPrice(); //获取当前商品的价格。

CrtSellSpinBox=CrtGood->GetSellSpinBox(); //获取卖出数量旋转框的指针。

if (CrtSellSpinBox->value()) //真正卖出咯东西,则进行结算。

{

CrtAvePrice=CrtGood->GetAvePrice(); //获取平均进价。

EarnedMoney=CrtSellSpinBox->value()*(CrtPrice-CrtAvePrice); //计算出赚到的钱数。

Money+=CrtSellSpinBox->value()*CrtPrice; //更新钱数。

if (EarnedMoney>=0) //记录利润。

{

CrtGood->AddProfit(EarnedMoney); //记录利润。

} //if

else //记录亏损。

{

CrtGood->AddLose(EarnedMoney); //记录亏损。

} //else

CrtGood->AddTradeAmount(CrtSellSpinBox->value()); //记录交易量。

CrtGood->SubAmount(CrtSellSpinBox->value()); //减少存货。出货。

// CrtSellSpinBox->setMaximum(CrtSellSpinBox->maximum()-CrtSellSpinBox->value()); //设置新的最大值,这是在当前情况下能卖的商品个数。

// CrtAmountLcd=CrtGood->GetAmountLcd(); //获取商品存货数量二极管。

// CrtAmountLcd->display(CrtSellSpinBox->maximum()); //显示存货数量。

// ComputeBuySell(); //计算能买卖的货的个数。

//取出视口的矩形,将这个矩形向下移动一段距离,距离的值为当前滚动条的值。产生一个新的矩形,这个新的矩形就是用户当前实际看到的区域。

QRect CrtRect=ui->PlayScrollArea->viewport()->rect(); //取得视口的矩形。

CrtRect.moveTop(ui->PlayScrollArea->verticalScrollBar()->value()); //移动矩形。

qDebug() << __FILE__ << __LINE__ << __func__ << tr(“Scroll area height:”) << ui->PlayScrollArea->height(); //Debug.

qDebug() << __FILE__ << __LINE__ << __func__ << tr(“Scroll area widget height:”) << ui->PlayScrollArea->widget()->height(); //Debug.

if (Good2Sell->GetFrame()) //框架存在。

{

QuePourGold(Good2Sell); //将下泼金币动画添加到队列中。

PourGoldTimer.start(); //启动向下泼金币效果的定时器。

} //if

//创建“飞行文字”的队列:

QueFlyText(Good2Sell,EarnedMoney); //将飞行文字效果添加到队列中。

FlyTextTimer.start(); //启动飞行文字效果的定时器。

if (EarnedMoney>0) //是赚咯钱,则显示庆祝视频。

{

ShowCelibVideo(Good2Sell); //显示庆祝视频。

} //if

emit MoneyChanged(Money); //钱数已经改变。

} //if

return;

} //void ShangHaiYanMoJi::SellGood(Good * Good2Sell)

理论支持:QT文档中说明的信号槽连接类型:

Qt4.8:Qt命名空间,Qt Namespace

类型文档

enum Qt::ConnectionType

这個枚举量描述的是信号与信号槽之间可采用的连接的类型。尤其是用来指明某個信号是应当立即传递到信号槽中还是排队等待稍后传递。

常量

描述

Qt::AutoConnection

0

(默认)如果该信号是从一個与接收对象所处的线程不同的线程中发射的,则信号會被排队,其行为就像Qt::QueuedConnection一样。否则,该信号槽會立即被调用,其行为就像Qt::DirectConnection 一样。连接类型會在信号被发射时决定。

Qt::DirectConnection

1

当信号被发射时,信号槽會立即被调用。

Qt::QueuedConnection

2

当控件权转移到接收者的线程中的事件循环时,信号槽會被调用。信号槽是在接收者的线程中执行的。

Qt::BlockingQueuedConnection

4

与QueuedConnection 类似,但是当前线程會阻塞,直到信号槽返回为止。只有在发射者与接收者处于不同的线程时,才能使用这种连接类型。注意:如果不遵守这個规则,那么可能导致妳的程序死锁。

Qt::UniqueConnection

0×80

与AutoConnection 类似,但是只有在这個连接不會与已有的连接重复时才會建立。也就是说,如果相同的信号与信号槽已经在相同的一对对象之间连接起来,那么这次的连接将會失败。这個连接类型是从Qt 4.6 开始引入的。

Qt::AutoCompatConnection

3

如果启用咯Qt 3 支持,则这個會是默认的连接类型。与AutoConnection 类似,但是在某些情况下會导致输出警告信息。参考兼容性信号和信号槽(Compatibility Signals and Slots)以了解更多信息。

对于排队式连接,其参数必须是 Qt 的元对象系统认识的类型,因为Qt 需要复制这些参数并且将它们在后台的事件中储存。如果妳尝试使用一個排队式连接而碰到这样的错误信息的话:

QObject::connect: Cannot queue arguments of type ‘MyType’

那么就在建立连接之前调用qRegisterMetaType()来注册一下这种数据类型。

如果想在跨线程使用信号和信号槽的话,参考一下跨线程的信号和信号槽(Signals and Slots Across Threads)

参考Qt中的线程支持QObject::connect()qRegisterMetaType()

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2012/02/%e5%af%b9qt%e4%b8%ad%e4%bf%a1%e5%8f%b7%e6%a7%bd%e8%bf%9e%e6%8e%a5%e4%ba%86%e8%a7%a3%e4%b8%8d%e5%a4%9f%e5%af%bc%e8%87%b4%e9%80%bb%e8%be%91%e9%94%99%e8%af%af/

05 2012

Qt4.7文档翻译:VideoWidget类参考,VideoWidget Class Reference

- no title specified


Qt4.7文档翻译:VideoWidget类参考,VideoWidget Class Reference

(Phonon::VideoWidget)

成员函数文档

QImage VideoWidget::snapshot () const

返回此部件中显示的当前幀的截图。

这個函数是从Qt 4.7 开始提供的。

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2012/01/qt4-7%e6%96%87%e6%a1%a3%e7%bf%bb%e8%af%91%ef%bc%9avideowidget%e7%b1%bb%e5%8f%82%e8%80%83videowidget-class-reference/

十二 29 2011

Qt4.7文档翻译:将各种Qt 数据类型序列化,Serializing Qt Data Types

- no title specified


Qt4.7文档翻译:将各种Qt 数据类型序列化,Serializing Qt Data Types

QDataStream允许妳将某些Qt 数据类型序列化。下面的表格列出的就是QDataStream可以序列化的数据类型以及它们是如何表示的。下面描述的格式是版本12的。

在读写整数时,最好是将它们转到成Qt 的整数类型,例如qint16 或quint32。这样能够确保妳永远准确地知道妳正在读写的整数的尺寸,而不用在乎这個程序是在什么样的底层平台和架构上运行。

bool

  • •.逻辑值

qint8

  • •.带符号字节

qint16

  • •.带符号16位整数

qint32

  • •.带符号32位整数

qint64

  • •.带符号64位整数

quint8

  • •.无符号字节

quint16

  • •.无符号16位整数

quint32

  • •.无符号32位整数

quint64

  • •.无符号64位整数

float

  • •.使用标准的IEEE 754 格式表示的32位浮点数

double

  • •.使用标准的IEEE 754 格式表示的64位浮点数

const char *

  • •.字符串长度(quint32)

  • •.字符串中的那些字节,不包括末尾的0

QBitArray

  • •.序列的大小(quint32)

  • •.序列的位,也就是说,(size + 7)/8個字节

QBrush

  • •.画刷样式(quint8)

  • •.画刷颜色(QColor)

  • •.如果样式(style)是 CustomPattern 的话,则是画刷的位图(QPixmap)

QByteArray

  • •.如果是空的:0xFFFFFFFF (quint32)

  • •.否则:序列的大小(quint32),接着是序列中的那些字节,也就是说size 個字节

QColor

  • •.颜色规范(qint8)

  • •.透明通道(Alpha)值(quint16)

  • •.红色分量值(quint16)

  • •.绿色分量值(quint16)

  • •.蓝色分量值(quint16)

  • •.填充量(Pad)值(quint16)

(注意,这里的“透明”“红”“绿”“蓝”“填充”不能分开单独看,它们实际上是一整個结构体,见本座另一篇文章QColor中的pad

QCursor

  • •.形状编号(qint16)

  • •.如果形状(shape)是BitmapCursor:位图本身(QPixmap)、掩码(mask)位图 (QPixmap)和热点(QPoint)

QDate

  • •.公历(Julian)日期(quint32)

QDateTime

  • •.日期(QDate)

  • •.时间(QTime)

  • •.0表示本地时间(Qt::LocalTime),或是1 表示协调通用时间(Qt::UTC) (quint8)

QEasingCurve

  • •.类型(type)(quint8)

  • •.自定义函数的指针(func)(quint64)

  • •.是否有自定义配置信息(hasConfig) (bool)

  • •.如果hasConfig 为真,则接下来是这些字段:

  • •.list(注意,这里应该是文档中的笔误,list应当是一個doxygen宏,表示将下面三個东西输出成一個子列表,再缩进一级。在QDataStream的实际代码中没有输出一個叫“list”的东西)

  • •.持续时间(period) (double)

  • •.幅度(amplitude) (double)

  • •.越界程度(overshoot) (double)

QFont

  • •.字体族(QString)

  • •.点大小(qint16)

  • •.样式建议(quint8)

  • •.字符集(quint8)

  • •.字体重量(quint8)

  • •.字体位(quint8)

QHash<Key, T>

  • •.条目的個数(quint32)

  • •.针对全部的条目,依次是键(Key)和值(T)

QIcon

  • •.位图条目的個数(quint32)

  • •.针对全部的位图条目:

    • •.位图本身(QPixmap)

    • •.文件名(QString)

    • •.位图几何尺寸(QSize)

    • •.模式(mode)(quint32)

    • •.状态(state)(quint32)

QImage

  • •.如果图片是空的,则會保存一個“空图片”标记;否则这個图片将保存为PNG 或BMP 格式(取决于流的版本)。如果妳想控制格式,则将图片(使用QImageIO)以流式输出到一個QBuffer中,再将那個东西输出。

QKeySequence

  • •.实际是一個QList<int>,其中的每個整数都是一個按键

QLinkedList<T>

  • •.条目的個数(quint32)

  • •.那些条目(T)

QList<T>

  • •.条目的個数(quint32)

  • •.那些条目(T)

QMap<Key, T>

  • •.条目的個数(quint32)

  • •.针对全部的条目,输出键(Key)和值(T)

QMatrix(废弃)

  • •.m11 (double)

  • •.m12 (double)

  • •.m21 (double)

  • •.m22 (double)

  • •.dx (double)

  • •.dy (double)

QMatrix4x4

  • •.m11 (double)

  • •.m12 (double)

  • •.m13 (double)

  • •.m14 (double)

  • •.m21 (double)

  • •.m22 (double)

  • •.m23 (double)

  • •.m24 (double)

  • •.m31 (double)

  • •.m32 (double)

  • •.m33 (double)

  • •.m34 (double)

  • •.m41 (double)

  • •.m42 (double)

  • •.m43 (double)

  • •.m44 (double)

QPair<T1, T2>

  • •.第一個元素(T1)

  • •.第二個元素(T2)

QPalette

禁用的、活跃的和非活跃的颜色组,其中每個组由以下东西构成:

  • •.前景(foreground) (QBrush)

  • •.按钮(button) (QBrush)

  • •.相对于按钮更亮(light) (QBrush)

  • •.相对于按钮稍亮(midlight) (QBrush)

  • •.相对于按钮更暗(dark) (QBrush)

  • •.相对于按钮稍暗(mid) (QBrush)

  • •.文字(text )(QBrush)

  • •.亮文字(brightText )(QBrush)

  • •.按钮文字(buttonText )(QBrush)

  • •.基础颜色(base )(QBrush)

  • •.背景(background )(QBrush)

  • •.阴影(shadow )(QBrush)

  • •.高亮(highlight )(QBrush)

  • •.高亮文字(highlightedText )(QBrush)

  • •.链接(link )(QBrush)

  • •.已访问的链接(linkVisited )(QBrush)

QPen

  • •.画笔风格(quint8)

  • •.画笔宽度(quint16)

  • •.画笔颜色(QColor)

QPicture

  • •.图片数据的大小(quint32)

  • •.图片数据的原始字节组(char)

QPixmap

  • •.保存为PNG 图片。

QPoint

  • •.x坐标(qint32)

  • •.y坐标 (qint32)

QQuaternion

  • •.标量部分(double)

  • •. x坐标 (double)

  • •.y坐标 (double)

  • •. z坐标 (double)

QRect

  • •.左侧位置 (qint32)

  • •.顶部位置 (qint32)

  • •.右侧位置 (qint32)

  • •.底部位置 (qint32)

QRegExp

  • •.正则式模式(QString)

  • •.是否大小写敏感(quint8)

  • •.正则表达式语法(quint8)

  • •.是否是最小匹配(quint8)

QRegion

  • •.数据的大小,也就是说8 + 16 * (□的個数) (quint32)

  • •.10 (qint32)

  • •.□的個数(quint32)

  • •.按顺序输出的那些□(QRect)

QSize

  • •.宽度 (qint32)

  • •.高度 (qint32)

QString

  • •.如果字符串是空的:0xFFFFFFFF (quint32)

  • •.否则:按字节计的字符串长度(quint32),接下来是按照UTF-16表示的数据

QTime

  • •.从午夜到现在的毫秒数(quint32)

QTransform

  • •.m11 (double)

  • •.m12 (double)

  • •.m13 (double)

  • •.m21 (double)

  • •.m22 (double)

  • •.m23 (double)

  • •.m31 (double)

  • •.m32 (double)

  • •.m33 (double)

QUrl

  • •.记录的是一個URL (QString)

QVariant

  • •.数据的类型(quint32)

  • •.空(null)标志(qint8)

  • •.对应类型的数据

QVector2D

  • •. x坐标 (double)

  • •. y坐标 (double)

QVector3D

  • •. x 坐标 (double)

  • •. y 坐标 (double)

  • •. z 坐标 (double)

QVector4D

  • •. x 坐标 (double)

  • •. y 坐标 (double)

  • •. z 坐标 (double)

  • •. w 坐标 (double)

QVector<T>

  • •.条目的個数(quint32)

  • •.条目们(T)

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2011/12/qt4-7%e6%96%87%e6%a1%a3%e7%bf%bb%e8%af%91%ef%bc%9a%e5%b0%86%e5%90%84%e7%a7%8dqt-%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b%e5%ba%8f%e5%88%97%e5%8c%96serializing-qt-data-types/

十二 06 2011

Qt4.7文档翻译:QLayout类参考,QLayout Class Reference

- no title specified


Qt4.7文档翻译:QLayout类参考,QLayout Class Reference

成员函数文档

void QLayout::addChildLayout ( QLayout * l ) [protected]

这個函数是由子类中的addLayout()insertLayout()函数调用的,用来将布局器l 添加为子代布局器。

唯一的一個需要直接调用这個函数的场景就是妳实现咯一個自定义的支持嵌套布局的布局器。

参考QBoxLayout::addLayout()QBoxLayout::insertLayout()和QGridLayout::addLayout()

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2011/12/qt4-7%e6%96%87%e6%a1%a3%e7%bf%bb%e8%af%91%ef%bc%9aqlayout%e7%b1%bb%e5%8f%82%e8%80%83qlayout-class-reference/

十一 28 2011

•.Qt4.7文档翻译:Qt样式单参考,Qt Style Sheets Reference

- no title specified

  • •.Qt4.7文档翻译:Qt样式单参考,Qt Style Sheets Reference

内容

Qt样式单参考

Qt样式单支持各种属性、伪状态和子控件,这样使得妳能够自行设计部件的外观。

可进行样式设置的部件列表

下表列出的是可使用样式单来自定义其外观的Qt 部件:

部件

如何设置样式

QAbstractScrollArea

支持盒状模型

QAbstractScrollArea的所有继承类,包括QTextEditQAbstractItemView(所有的条目视图(item view)类),都支持可滚动的背景,使用background-attachment来设置是否滚动。将background-attachment 设置成fixed的话,就会使得背景图片(background-image)不随视口(viewport)而滚动。如果将background-attachment 设置成scroll,那么在移动滚动条时,背景图片也会移动。

参考自定义QAbstractScrollArea的示例。

QCheckBox

支持盒状模型。选中状态的指示器可使用::indicator子控件(subcontrol)来进行样式设置。默认情况下,指示器是放在部件的内容(Contents)区域的左(Left)上(Top)角。

spacing属性控制的是选中状态指示器与文字之间的空隙。

参考自定义QCheckBox示例。

QColumnView

可使用image属性来对网格(grip)进行样式设置。箭头指示器(arrow indicators)可使用::left-arrow::right-arrow子控件来进行样式设置。

QComboBox

组合框周围的框架(frame)可使用盒状模型来进行样式设置。下拉按钮可使用::drop-down子控件来进行样式设置。默认情况下,下拉按钮是放置在部件的填充(padding)区域的右上角。下拉按钮中的箭头标志可使用::down-arrow子控件来进行样式设置。默认情况下,箭头是放置在下拉按钮子控件的内容区域的中央。

参考自定义QComboBox示例。

QDateEdit

参考QSpinBox

QDateTimeEdit

参考QSpinBox

QDialog

只支持backgroundbackground-clipbackground-origin属性。

警告:确保妳在自定义的部件中定义咯Q_OBJECT宏。

QDialogButtonBox

按钮的布局方式可使用button-layout属性来改变。

QDockWidget

在停靠状态(docked),支持对标题栏和标题栏的按钮进行样式设置。

停靠部件的边框(border)可使用border属性来进行样式设置。::title子控件可用来对标题栏进行样式设置。关闭按钮和漂浮按钮可分别使用::close-button::float-button来相对于(with respect to)::title子控件进行位置设置。如果标题栏是竖直的,那么就会存在(is set):vertical伪类。另外,取决于QDockWidget::DockWidgetFeature的值,:closable:floatable:movable伪状态也可能存在。

注意:使用QMainWindow::separator 来对改变大小的手柄(resize handle)进行样式设置。

警告:QDockWidget不处于停靠状态(undocked)时,样式单无效,∵Qt 在未停靠状态会使用原生(native)的顶级窗口。

参考自定义QDockWidget示例。

QDoubleSpinBox

参考QSpinBox

QFrame

支持盒状模型

从4.3 开始,对一個QLabel设置样式单的话,會自动将QFrame::frameStyle 属性设置成QFrame::StyledPanel

参考自定义QFrame示例。

QGroupBox

支持盒状模型。标题可使用::title子控件来进行样式设置。默认情况下,标题是按照QGroupBox::textAlignment 来放置位置的。

如果是一個可选中(checkable)的QGroupBox的话,那么标题也包含选中状态指示器。指示器可使用::indicator子控件来进行样式设置。spacing属性可用来控制文字与指示器之间的间隔。

参考自定义QGroupBox示例。

QHeaderView

支持盒状模型。表头视图(header view)的各个节区(sections)是使用::section子控件来进行样式设置的。section子控件支持:middle:first:last nly-one:next-selected:previous-selected:selected:checked伪状态。

排序指示器可使用::up-arrow::down-arrow子控件来进行样式设置。

参考自定义QHeaderView示例。

QLabel

支持盒状模型。不支持:hover伪状态。

从4.3 开始,对一個QLabel设置样式单的话,會自动将QFrame::frameStyle 属性设置成QFrame::StyledPanel

参考自定义QFrame示例(QLabel继承自QFrame)。

QLineEdit

支持盒状模型

选中的项目(item)的颜色和背景分别是使用selection-colorselection-background-color来进行样式设置的。

密码字符可使用lineedit-password-character属性来进行样式设置。

参考自定义QLineEdit示例。

QListView

支持盒状模型。如果交替改变行颜色(alternating row colors)被启用的话,那么交替的颜色(alternating colors)可使用alternate-background-color属性来进行样式设置。

选中的项目(item)的颜色和背景分别是使用selection-colorselection-background-color来进行样式设置的。

选择行为是由show-decoration-selected属性来进行控制的。

使用::item子控件来对QListView中的条目进行更精细的控制。

参考QAbsractScrollArea以了解对可滚动的背景的样式设置。

参考自定义QListView示例。

QListWidget

参考QListView

QMainWindow

支持对分隔符进行样式设置。

QMainWindow中使用QDockWidget时产生的分隔符是使用::separator子控件来进行样式设置的。

参考自定义QMainWindow示例。

QMenu

支持盒状模型

单个的条目是使用::item子控件来进行样式设置的。除咯通常的伪状态以外,item子控件还支持:selected:default:exclusivenon-exclusive伪状态。

可选中的菜单条目的指示器是通过::indicator子控件来进行样式设置的。

分隔符是使用::separator子控件来进行样式设置的。

对于有子菜单的条目,它们的箭头标记是使用right-arrowleft-arrow来进行样式设置的。

滚动器(scroller)是使用::scroller来进行样式设置的。

分离菜单(tear-off)是使用::tearoff来进行样式设置的。

参考自定义QMenu示例。

QMenuBar

支持盒状模型spacing属性指明菜单条目之间的空隙大小。单个的条目是使用::item子控件来进行样式设置的。

警告:在Qt/Mac 平台上,菜单条通常是嵌入系统的全局菜单条中的。在这种情况下,样式单无效。

参考自定义QMenuBar示例。

QMessageBox

messagebox-text-interaction-flags属性可用来改变消息框中的文字的交互模式。

QProgressBar

支持盒状模型。进度条的进度块(chunks)可使用::chunk子控件来进行样式设置。进度块显示在部件的内容区域中。

如果进度条显示文字,那么就使用text-align属性来设置文字的位置。

不确定的(Indeterminate)进度条会有:indeterminate伪状态。

参考自定义QProgressBar示例。

QPushButton

支持盒状模型。支持:default:flat:checked伪状态。

对于包含有一個菜单的QPushButton,其菜单指示器是使用::menu-indicator子控件来进行样式设置的。可选中的按钮的外观可使用 pen:closed伪状态来进行样式设置。

警告:如果妳只为QPushButton设置一个背景色(background-color)的话,那個背景可能不会显示出来,除非妳将边框(border)属性设置成某個值。勒是∵,在默认情况下,QPushButton会绘制一個原始的(native)边框,它會完全覆盖(overlaps)背景色。例如,

QPushButton { background-color: red; border: none; }

参考自定义QPushButton示例。

QRadioButton

支持盒状模型。选中指示器可使用::indicator子控件来进行样式设置。默认情况下,指示器被放置在部件的内容区域的左上角。

spacing属性指明选中指示器与文字之间的空隙大小。

参考自定义QRadioButton示例。

QScrollBar

支持盒状模型。目前认为滑块在其中滑动的那个槽(groove)就是这个部件的内容区域。QScrollBar的广度(extent)(也就是说,宽度或高度,取决于方向)是使用widthheight属性来设置的。要确定方向的话,就使用:horizontal:vertical伪状态。

滑块可使用::handle子控件来进行样式设置。设置min-widthmin-height可按照方向来对滑块提供尺寸的限制。

(以下部分的原文写得很糟糕,本座按照理解修改咯某些语意,有不清楚的地方最好自行试验)

::add-line子控件可用来对那个增加一行的按钮进行样式设置。默认情况下,加一行(add-line)子控件被放置在部件的边框(Border)区域的右下角(原文意思是右上角)。取决于部件的方向,其中的箭头(前面这个主语从句,原文没有)可能是::right-arrow::down-arrow。默认情况下,箭头会被放置在加一行子控件的内容区域的中心。

::sub-line子控件可用来对那个减少一行的按钮进行样式设置。默认情况下,减一行(sub-line)子控件被放置在部件的边框区域的左上角(原文是右下角)。取决于部件的方向,其中的箭头(前面这个主语从句,原文没有)可能是::left-arrow::up-arrow。默认情况下,箭头会被放置在减一行子控件的内容区域的中心。

::sub-page子控件可用来对那个可起到减一页作用的滑块区域进行样式设置。::add-page子控件可用来对那个可起到加一页作用的滑块区域进行样式设置。

参考自定义QScrollBar示例。

QSizeGrip

支持widthheightimage属性。

参考自定义QSizeGrip示例。

QSlider

支持盒状模型。对于水平滑动器,必须提供min-widthheight属性。对于竖直滑动器,必须提供min-heightwidth属性。

滑动器的滑槽是使用::groove来进行样式设置的。默认情况下,滑槽被放置在部件的内容区域中。滑动器的滑块(thumb)是使用::handle子控件来进行样式设置的。这个子控件就在滑槽的内容区域中移动。

参考自定义QSlider示例。

QSpinBox

旋转框(spin box)的框架(frame)可使用盒状模型来进行样式设置。

向上按钮和箭头可使用::up-button::up-arrow子控件来进行样式设置。默认情况下,向上按钮被放置在部件的填充区域的右上角。如果没有设置显式的尺寸,那么,它會占据它的参考(reference)区域的一半高度。向上箭头被放置在向上按钮的内容区域的中心。

向下按钮和箭头可使用::down-button::down-arrow子控件来进行样式设置。默认情况下,向下按钮被放置在部件的填充区域的右下角。如果没有设置显式的尺寸,那么,它會占据它的参考(reference)区域的一半高度。向下箭头被放置在向下按钮的内容区域的中心。

参考自定义QSpinBox示例。

QSplitter

支持盒状模型。分割器(splitter)的手柄是使用::handle子控件进行样式设置的。

参考自定义QSplitter示例。

QStatusBar

只支持background属性。单个条目的框架可使用::item子控件来进行样式设置。

参考自定义QStatusBar示例。

QTabBar

单个标签(tabs)可使用::tab子控件来进行样式设置。关闭按钮可使用::close-button子控件进行样式设置。标签支持 nly-one:first:last:middle:previous–selected:next-selected:selected伪状态。

取决于标签组的方向,會有:top:left:right:bottom伪状态。

处于选中状态的重叠的标签是通过使用负数的边距(margins)或使用absolute(绝对)位置模式来创建的。

QTabBar的分离(tear)指示器是使用::tear子控件来进行样式设置的。

QTabBar用两个QToolButtons 来表示它的滚动器,它们可使用QTabBar QToolButton选择器来进行样式设置。使用::scroller子控件来指定滚动按钮的宽度。

QTabBar中的标签的对齐方式是使用alignment属性来进行设置的。

警告:要改变QTabWidget中的QTabBar的位置,就使用tab-bar子控件(并且设置子控件位置(subcontrol-position))。

参考自定义QTabBar示例。

QTabWidget

标签部件的框架是使用::pane子控件来进行样式设置的。左边角和右边角分别是使用::left-corner::right-corner来进行样式设置的。标签条的位置是使用::tab-bar子控件来控制的。

默认情况下,QTabWidget的子控件的位置是按照QWindowsStyle风格来确定的。要想将QTabBar放置在中央的位置,就设置tab-bar 子控件的subcontrol-position。

取决于标签组的方向,會有:top:left:right:bottom伪状态。

参考自定义QTabWidget示例。

QTableView

支持盒状模型。如果交替改变行颜色(alternating row colors)被启用的话,那么交替的颜色(alternating colors)可使用alternate-background-color属性来进行样式设置。

选中的项目(item)的颜色和背景分别是使用selection-colorselection-background-color来进行样式设置的。

QTableView中的边角(corner)部件是一個QAbstractButton,可使用”QTableViewQTableCornerButton::section”选择器来进行样式设置。

警告:如果妳只为QTableCornerButton 设置背景色的话,背景可能不会显示出来,除非妳将边框属性设置成某個值。这是∵,默认情况下,QTableCornerButton會绘制一個原始的边框,它會完全挡住背景色。

网格(grid)的颜色可使用gridline-color属性来进行设置。

参考QAbsractScrollArea以了解如何设置可滚动的背景。

参考自定义QTableView示例。

QTableWidget

参考QTableView

QTextEdit

支持盒状模型

选中的文字的颜色和背景色可分别使用selection-colorselection-background-color来进行样式设置。

参考QAbsractScrollArea以了解如何设置可滚动的背景。

QTimeEdit

参考QSpinBox

QToolBar

支持盒状模型

取决于工具条所在的区域(停靠方向),可能會存在:top:left:right:bottom伪状态。

:first:last:middle nly-one伪状态能够指示这個工具条在一個线性(line)组(group)(参考QStyleOptionToolBar::positionWithinLine)中的位置。

QToolBar的分隔符是使用::separator子控件来进行样式设置的。

手柄(handle)(用来移动工具条)是使用::handle子控件来进行样式设置的。

参考自定义QToolBar示例。

QToolButton

支持盒状模型

如果这個QToolButton拥有一個菜单的话,那么::menu-indicator子控件可用来对菜单指示器进行样式设置。默认情况下,菜单指示器(menu-indicator)被放置在这個部件的填充区域的右下角。

如果这個QToolButton是处于QToolButton::MenuButtonPopup模式,那么::menu-button子控件就会用来绘制菜单按钮。::menu-arrow子控件被用来在菜单按钮里面绘制菜单箭头。默认情况下,它会位于菜单按钮子控件的内容区域的中心。

如果这個QToolButton显示箭头的话,那么::up-arrow::down-arrow::left-arrow::right-arrow子控件都会用上。

警告:如果妳只为QToolButton 设置背景色的话,背景可能不会显示出来,除非妳将边框属性设置成某個值。这是∵,默认情况下,QToolButton會绘制一個原始的边框,它會完全挡住背景色。例如,

QToolButton { background-color: red; border: none; }

参考自定义QToolButton示例。

QToolBox

支持盒状模型

单个标签可使用::tab子控件来进行样式设置。标签支持 nly-one:first:last:middle:previous-selected:next-selected:selected伪状态。

QToolTip

支持盒状模型opacity属性控制工具提示(tooltip)的透明度。

参考自定义QFrame示例(QToolTipQFrame)。

QTreeView

支持盒状模型。如果交替改变行颜色(alternating row colors)被启用的话,那么交替的颜色(alternating colors)可使用alternate-background-color属性来进行样式设置。

选中的项目(item)的颜色和背景分别是使用selection-colorselection-background-color来进行样式设置的。

选择行为是由show-decoration-selected属性来进行控制的。

树型视图的分支(branches)可使用::branch子控件来进行样式设置。::branch子控件支持 pen:closed:has-sibling:has-children伪状态。

使用::item子控件来对QTreeView中的条目进行更精细的控制。

参考QAbsractScrollArea以了解如何设置可滚动的背景。

参考自定义QTreeView示例以了解如何对分支进行样式设置。

QTreeWidget

参考QTreeView

QWidget

只支持backgroundbackground-clipbackground-origin属性。

如果妳从QWidget继承一個子类,那么妳需要为妳的自定义QWidget提供以下的一個绘制事件(paintEvent):

void CustomWidget::paintEvent(QPaintEvent *)

{

QStyleOption opt;

opt.init(this);

QPainter p(this);

style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);

}

如果没有设置样式单的话,以上的代码不起任何作用(no-operation)。

警告:确保为妳的自定义部件(widget)定义咯Q_OBJECT宏。

属性列表

下面的表格列出咯由Qt 样式单支持的所有属性。它们的值可按照属性类型来进行赋值。除非另外有说明,否则以下的属性对所有部件都有用。带有星号*的属性是Qt 特有的,在CSS2 或CSS3 中没有等价属性。

属性

类型

说明

alternate-background-color

Brush

QAbstractItemView子类中使用的交替背景色

如果这個属性没有设置的话,那么默认值就是为调色板(palette)的AlternateBase角色(role)设置的值。

示例:

QTreeView {

alternate-background-color: blue;

background: yellow;

}

参考backgroundselection-background-color

background

Background

用来设置背景的省写(Shorthand)方式。等价于设置background-colorbackground-imagebackground-repeat和/或background-position

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQDialogQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip和普通的QWidget支持。

示例:

QTextEdit { background: yellow }

通常,有必要设置一個类似Qt::BrushStyle中的样式的填充模式。你可以为Qt::SolidPatternQt::RadialGradientPatternQt::LinearGradientPatternQt::ConicalGradientPattern使用背景色(background-color)属性。其它模式也可以很简单地通过创建一個包含那种模式的背景图片的方式来实现。

示例:

QLabel {

background-image: url(dense6pattern.png);

background-repeat: repeat-xy;

}

参考background-originselection-background-colorbackground-clipbackground-attachmentalternate-background-color

background-color

Brush

为这個部件使用的背景颜色。

示例:

QLabel { background-color: yellow }

QLineEdit { background-color: rgb(255, 0, 0) }

background-image

Url

为这個部件使用的背景图片。图片的半透明部分会露出背景颜色(background-color)。

示例:

QFrame { background-image: url(:/images/hydro.png) }

background-repeat

Repeat

在填充background-origin矩形的过程中,背景图片是否要重要,以及如何重复。

如果没有设置的话,则背景图片在两个方向上都重复(repeat)。

示例:

QFrame {

background: white url(:/images/ring.png);

background-repeat: repeat-y;

background-position: left;

}

background-position

Alignment

背景图片在background-origin矩形中的对齐方式。

没有设置的话,则对齐方式是top left(左上)。

Example:

QFrame {

background: url(:/images/footer.png);

background-position: bottom left;

}

background-attachment

Attachment

确定在一個QAbstractScrollArea中的背景图片是否会随视口(viewport)滚动。默认情况下,背景图片会随视口滚动。

示例:

QTextEdit {

background-image: url(“leaves.png”);

background-attachment: fixed;

}

参考background

background-clip

Origin

在部件的矩形区域中绘制背景(background)的区域。

这個属性指定的是background-colorbackground-image在其中被修剪(clipped)的矩形区域。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQDialogQFrameQGroupBoxQLabelQPushButtonQRadioButtonQSplitterQTextEditQToolTip和普通的QWidget支持。

如果这個属性没有设置的话,则默认值是border

示例:

QFrame {

background-image: url(:/images/header.png);

background-position: top left;

background-origin: content;

background-clip: padding;

}

参考backgroundbackground-origin盒状模型(The Box Model)

background-origin

Origin

部件的背景矩形区域,与background-positionbackground-image结合使用。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQDialogQFrameQGroupBoxQLabelQPushButtonQRadioButtonQSplitterQTextEditQToolTip和普通的QWidget支持。

如果这個属性没有设置的话,则默认值是padding

示例:

QFrame {

background-image: url(:/images/header.png);

background-position: top left;

background-origin: content;

}

参考background盒状模型

border

Border

用来设置部件的边框的省写方式。等价于设置border-colorborder-style和/或border-width

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip和普通QWidget支持。

示例:

QLineEdit { border: 1px solid white }

border-top

Border

用来设置部件的顶部边框的省写方式。等价于设置border-top-colorborder-top-style和/或border-top-width

border-right

Border

用来设置部件的右侧边框的省写方式。等价于设置border-right-colorborder-right-style和/或border-right-width

border-bottom

Border

用来设置部件的底部边框的省写方式。等价于设置border-bottom-colorborder-bottom-style和/或border-bottom-width

border-left

Border

用来设置部件的左侧边框的省写方式。等价于设置border-left-colorborder-left-style和/或border-left-width

border-color

Box Colors

边框的所有边的颜色。等价于指定border-top-colorborder-right-colorborder-bottom-colorborder-left-color

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip和普通QWidget支持。

如果这個属性没有指定,则默认是color(也就是说,部件的前景色)。

示例:

QLineEdit {

border-width: 1px;

border-style: solid;

border-color: white;

}

参考border-styleborder-widthborder-image盒状模型

border-top-color

Brush

边框的顶部边线的颜色。

border-right-color

Brush

边框的右侧边线的颜色。

border-bottom-color

Brush

边框的底部边线的颜色。

border-left-color

Brush

边框的左侧边线的颜色。

border-image

Border Image

用来填充边框的图片。图片被切成9块,并且在必要的时候还会被拉伸(stretched)。参考Border Image以了解细节。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip支持。

参考border-colorborder-styleborder-width盒状模型

border-radius

Radius

边框的边角的半径。等价于指定border-top-left-radiusborder-top-right-radiusborder-bottom-right-radiusborder-bottom-left-radius

边框半径(border-radius)会修剪(clips)这個元素的背景(background)。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip支持。

如果这個属性没有指定的话,那么它的默认值是0。

示例:

QLineEdit {

border-width: 1px;

border-style: solid;

border-radius: 4px;

}

参考border-width盒状模型

border-top-left-radius

Radius

边框的左上角的半径。

border-top-right-radius

Radius

边框的右上角的半径。

border-bottom-right-radius

Radius

边框的右下角的半径。将这個属性设置成正数的值就会产生圆角。

border-bottom-left-radius

Radius

边框的左下角的半径。将这個属性设置成正数的值就会产生圆角。

border-style

Border Style

边框的所有边线的风格。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip支持。

如果这個属性没有指定,则默认值是无(none)。

示例:

QLineEdit {

border-width: 1px;

border-style: solid;

border-color: blue;

}

参考border-colorborder-styleborder-image盒状模型

border-top-style

Border Style

边框的顶部边线的风格。

border-right-style

Border Style

边框的右侧边线的风格。

border-bottom-style

Border Style

边框的底部边线的风格。

border-left-style

Border Style

边框的左侧边线的风格。

border-width

Box Lengths

边框的宽度。等价于设置border-top-widthborder-right-widthborder-bottom-widthborder-left-width

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip支持。

示例:

QLineEdit {

border-width: 2px;

border-style: solid;

border-color: darkblue;

}

参考border-colorborder-radiusborder-styleborder-image盒状模型

border-top-width

Length

边框的顶部边线的宽度。

border-right-width

Length

边框的右侧边线的宽度。

border-bottom-width

Length

边框的底部边线的宽度。

border-left-width

Length

边框的左侧边线的宽度。

bottom

Length

如果position(位置)是relative(相对的)(默认值),则将一个子控件(subcontrol)向上移动一定的位置;在那种情况下,指定bottom: y等价于指定top: -y

如果positionabsolute(绝对的),则bottom属性指定的是这个子控件的底部边线相对于亲代(parent)部件的底部边线的位置(参考subcontrol-origin)。

示例:

QSpinBox::down-button { bottom: 2px }

参考leftrighttop

button-layout

Number

在一個QDialogButtonBoxQMessageBox中的按钮的布局。可选值是0 (WinLayout)、1 (MacLayout)、2 (KdeLayout)和3 (GnomeLayout)。

如果这個属性没有指定的话,则默认值是由当前风格中的SH_DialogButtonLayout风格提示来确定的。

示例:

* { button-layout: 2 }

color

Brush

用来渲染文字的颜色。

所有支持(respect)QWidget::palette的部件都支持这個属性。

如果这個属性没有设置的话,则默认值是为这個部件的调色板设置的QWidget::foregroundRole 的值(通常是黑色)。

示例:

QPushButton { color: red }

参考backgroundselection-color

dialogbuttonbox-buttons-have-icons

Boolean

QDialogButtonBox中的按钮是否要显示图标。

如果这個属性设置为1,则QDialogButtonBox中的按钮显示图标;如果设置为0,则不显示图标。

参考List of Icons(图标列表)小节以了解如何设置图标。

QDialogButtonBox { dialogbuttonbox-buttons-have-icons: 1; }

注意:定义咯这個属性的样式必须在QDialogButtonBox被创建之前就应用;也就是说妳必须将样式应用到它的亲代部件或者直接应用到程序本身。

font

Font

用来设置文字的字体的省写方式。等价于设置font-familyfont-sizefont-style和/或font-weight

所有支持QWidget::font的部件都支持这個属性。

如果没有设置,则默认值是QWidget::font

示例:

QCheckBox { font: bold italic large “Times New Roman” }

font-family

String

字体族(family)。

示例:

QCheckBox { font-family: “New Century Schoolbook” }

font-size

Font Size

字体大小。在这個版本的Qt 中,只支持pt 和px 单位。

示例:

QTextEdit { font-size: 12px }

font-style

Font Style

字体风格。

示例:

QTextEdit { font-style: italic }

font-weight

Font Weight

字体的重量(weight)。

gridline-color*

Color

QTableView中的网格线的颜色。

如果没有设置的话,则默认值是当前风格中为SH_Table_GridLineColor样式提示指定的值。

示例:

* { gridline-color: gray }

height

Length

一個子控件(subcontrol)(在某些情况下,是部件)的高度。

如果这個属性没有设置,则默认值取决于子控件/部件本身及当前的风格。

警告:除非另有说明,否则这个属性对部件无效。如果妳想要某個部件拥有固定的高度,则将min-heightmax-height设置成同一個值。

示例:

QSpinBox::down-button { height: 10px }

参考width

icon-size

Length

某個部件中的图标的宽度和高度。

以下部件的图标尺寸可使用这個属性来设置。

image*

Url+

被绘制到一個子控件(subcontrol)的内容区域的图片。

image(图片)属性接受一组Url(统一资源定位器)或一個svg(可缩放矢量图)。实际绘制的图片是由与QIcon相同的算法来确定的,(也就是说)图片绝不会被放大但必要的时候一定会缩小。如果指定咯一個svg,则图片会缩放到内容区域的大小。

在子控件上设置图片会隐式地设置那個子控件的宽度和高度(除非图片是一個SVG)。

在Qt 4.3 和以后的版本中,可使用image-position来指定图片在矩形区域中的对齐方式。

这個属性是只为子控件(subcontrol)设计的–我们不在其它元素中支持它。

警告:需要有QIcon SVG 插件才能渲染SVG 图片。

示例:

/* 隐式地将down-button 的大小设置成spindown.png 的大小 */

QSpinBox::down-button { image: url(:/images/spindown.png) }

image-position

alignment

在Qt 4.3 及以后的版本中,图片的位置可使用相对定位和绝对定位来设置。

left

Length

如果position(位置)是relative(相对的)(默认值),则将某個subcontrol(子控件)向右移动一定距离。

如果positionabsolute(绝对的),则left属性指定的是这個子控件的左边线与亲代部件的左边线的相对位置(参考subcontrol-origin)。

如果没有设置,则默认值是0

示例:

QSpinBox::down-button { left: 2px }

参考righttopbottom

lineedit-password-character*

Number

以Unicode(统一码)指定的QLineEdit密码字符。

如果这個属性没有设置,则默认值是由当前风格中的SH_LineEdit_PasswordCharacter样式提示确定的。

示例:

* { lineedit-password-character: 9679 }

margin

Box Lengths

部件的边距(margins)。等价于指定margin-topmargin-rightmargin-bottommargin-left

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip支持。

如果没有设置的话,默认为0

示例:

QLineEdit { margin: 2px }

参考paddingspacing盒状模型

margin-top

Length

部件的顶部边距。

margin-right

Length

部件的右侧边距。

margin-bottom

Length

部件的底部边距。

margin-left

Length

部件的左侧边距。

max-height

Length

这個部件或者其子控件的最大高度。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSizeGripQSpinBoxQSplitterQStatusBarQTextEditQToolTip支持。

这個值是相对于盒状模型中的内容区域的。

示例:

QSpinBox { max-height: 24px }

参考max-width

max-width

Length

这個部件或者其子控件的最大宽度。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSizeGripQSpinBoxQSplitterQStatusBarQTextEditQToolTip支持。

这個值是相对于盒状模型中的内容区域的。

示例:

QComboBox { max-width: 72px }

参考max-height

messagebox-text-interaction-flags*

Number

在消息框中的文字的交互行为。可能取的值取决于Qt::TextInteractionFlags

如果属性没有设置的话,则默认值是由当前风格中的SH_MessageBox_TextInteractionFlags样式提示确定的。

示例:

QMessageBox { messagebox-text-interaction-flags: 5 }

min-height

Length

这個部件或者其子控件的最小高度。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSizeGripQSpinBoxQSplitterQStatusBarQTextEditQToolTip支持。

如果这個属性没有指定的话,则最小高度是基于这個部件的内容和样式来继承的。

这個值是相对于盒状模型中的内容区域的。

示例:

QComboBox { min-height: 24px }

参考min-width

min-width

Length

这個部件或者其子控件的最小宽度。

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSizeGripQSpinBoxQSplitterQStatusBarQTextEditQToolTip支持。

如果这個属性没有指定的话,则最小宽度是基于这個部件的内容和样式来继承的。

这個值是相对于盒状模型中的内容区域的。

示例:

QComboBox { min-width: 72px }

参考min-height

opacity*

Number

某個部件的透明度。取值范围从0 (透明)到255 (不透明)。当前只被工具提示(tooltips)支持。

如果这個属性没有设置,则默认值由当前风格中的SH_ToolTipLabel_Opacity样式提示确定。

示例:

QToolTip { opacity: 223 }

padding

Box Lengths

这個部件的填充宽度(padding)。等价于设置padding-toppadding-rightpadding-bottompadding-left

这個属性被QAbstractItemView子类、QAbstractSpinBox子类、QCheckBoxQComboBoxQFrameQGroupBoxQLabelQLineEditQMenuQMenuBarQPushButtonQRadioButtonQSplitterQTextEditQToolTip支持。

如果没有设置的话,默认为0

示例:

QLineEdit { padding: 3px }

参考marginspacing盒状模型

padding-top

Length

这個部件的顶部填充距离。

padding-right

Length

这個部件的右侧填充距离。

padding-bottom

Length

这個部件的底部填充距离。

padding-left

Length

这個部件的左侧填充距离。

paint-alternating-row-colors-for-empty-area

bool

QTreeView是否要为空白区域(没有条目的区域)绘制交替行颜色

position

relative
| absolute

leftrighttopbottom指定的偏移值是相对的还是绝对的坐标。

如果没有设置,则默认值是relative

right

Length

如果position(位置)是relative(相对的)(默认值),则将某個subcontrol(子控件)向左移动一定距离;在那种情况下,指定right: x就等价于指定left: -x

如果positionabsolute(绝对的),则right属性指定的是这個子控件的右边线相对于亲代部件的右边线的位置(参考subcontrol-origin)。

示例:

QSpinBox::down-button { right: 2px }

参考lefttopbottom

selection-background-color*

Brush

选中的文字或条目的背景。

所有支持QWidget::palette并且显示选中文字的部件都支持这個属性。如果没有设置,则默认值是为调色板的Highlight角色设置的值。

示例:

QTextEdit { selection-background-color: darkblue }

参考selection-colorbackground

selection-color*

Brush

选中的文字或条目的前景。

所有支持QWidget::palette并且显示选中文字的部件都支持这個属性。

如果没有设置,则默认值是为调色板的HighlightedText角色设置的值。

示例:

QTextEdit { selection-color: white }

参考selection-background-colorcolor

show-decoration-selected*

Boolean

控制的是在一個QListView中的选中区域是要覆盖整个行还是只覆盖文字的区域。

如果没有设置,则默认值是由当前风格中的SH_ItemView_ShowDecorationSelected样式提示确定的。

示例:

* { show-decoration-selected: 1 }

spacing*

Length

这個部件内部的间隔(spacing)。

这個属性被QCheckBox、可选中的QGroupBoxQMenuBarQRadioButton支持。

如果没有指定,则默认值取决于部件本身及当前风格。

示例:

QMenuBar { spacing: 10 }

参考paddingmargin

subcontrol-origin*

Origin

这個subcontrol(子控件)在亲代元素中的根源(origin)矩形。

如果没有指定,则默认值为padding

示例:

QSpinBox::up-button {

image: url(:/images/spinup.png);

subcontrol-origin: content;

subcontrol-position: right top;

}

参考subcontrol-position

subcontrol-position*

Alignment

这個子控件(subcontrol)在由subcontrol-origin确定的根源矩形中的对齐方式。

如果没有设置的话,则默认值取决于子控件本身。

示例:

QSpinBox::down-button {

image: url(:/images/spindown.png);

subcontrol-origin: padding;

subcontrol-position: right bottom;

}

参考subcontrol-origin

text-align

Alignment

文字和图标在这個部件的内容中的对齐方式。

如果没有设置的话,则默认值取决于原生(native)风格。

示例:

QPushButton {

text-align: left;

}

当前只有QPushButtonQProgressBar支持这個属性。

text-decoration

none
underline
overline
line-through

附加的文字效果

top

Length

如果positionrelative(相对的)(默认值),则将一個subcontrol(子控件)向下移动指定距离。

如果positionabsolute(绝对的),则top属性指定的是这個子控件的顶部边线相对于亲代部件的顶部边线的位置(参考subcontrol-origin)。

如果没有设置的话,则默认值是0

示例:

QSpinBox::up-button { top: 2px }

参考leftrightbottom

width

Length

一個subcontrol(子控件)(或者在某些情况下会是部件)的宽度。

如果没有设置的话,则默认值取决于子控件/部件本身及当前的风格。

警告:除非另外说明,否则这個属性对于部件无效。如果妳想让某個部件具有固定的宽度,则将min-widthmax-width设置成相同的值。

示例:

QSpinBox::up-button { width: 12px }

参考height

图标列表

在Qt 中使用的图标可使用以下属性来进行自定义。这個小节中列出的每个属性的类型都是Icon

注意,要想让QDialogButtonBox中的按钮里出现图标的话,妳需要将dialogbuttonbox-buttons-have-icons 属性设置成true(真)。并且,要对图标的尺寸进行自定义的话,则使用icon-size 属性。

名字

QStyle::StandardPixmap

backward-icon

QStyle::SP_ArrowBack

cd-icon

QStyle::SP_DriveCDIcon

computer-icon

QStyle::SP_ComputerIcon

desktop-icon

QStyle::SP_DesktopIcon

dialog-apply-icon

QStyle::SP_DialogApplyButton

dialog-cancel-icon

QStyle::SP_DialogCancelButton

dialog-close-icon

QStyle::SP_DialogCloseButton

dialog-discard-icon

QStyle::SP_DialogDiscardButton

dialog-help-icon

QStyle::SP_DialogHelpButton

dialog-no-icon

QStyle::SP_DialogNoButton

dialog-ok-icon

QStyle::SP_DialogOkButton

dialog-open-icon

QStyle::SP_DialogOpenButton

dialog-reset-icon

QStyle::SP_DialogResetButton

dialog-save-icon

QStyle::SP_DialogSaveButton

dialog-yes-icon

QStyle::SP_DialogYesButton

directory-closed-icon

QStyle::SP_DirClosedIcon

directory-icon

QStyle::SP_DirIcon

directory-link-icon

QStyle::SP_DirLinkIcon

directory-open-icon

QStyle::SP_DirOpenIcon

dockwidget-close-icon

QStyle::SP_DockWidgetCloseButton

downarrow-icon

QStyle::SP_ArrowDown

dvd-icon

QStyle::SP_DriveDVDIcon

file-icon

QStyle::SP_FileIcon

file-link-icon

QStyle::SP_FileLinkIcon

filedialog-contentsview-icon

QStyle::SP_FileDialogContentsView

filedialog-detailedview-icon

QStyle::SP_FileDialogDetailedView

filedialog-end-icon

QStyle::SP_FileDialogEnd

filedialog-infoview-icon

QStyle::SP_FileDialogInfoView

filedialog-listview-icon

QStyle::SP_FileDialogListView

filedialog-new-directory-icon

QStyle::SP_FileDialogNewFolder

filedialog-parent-directory-icon

QStyle::SP_FileDialogToParent

filedialog-start-icon

QStyle::SP_FileDialogStart

floppy-icon

QStyle::SP_DriveFDIcon

forward-icon

QStyle::SP_ArrowForward

harddisk-icon

QStyle::SP_DriveHDIcon

home-icon

QStyle::SP_DirHomeIcon

leftarrow-icon

QStyle::SP_ArrowLeft

messagebox-critical-icon

QStyle::SP_MessageBoxCritical

messagebox-information-icon

QStyle::SP_MessageBoxInformation

messagebox-question-icon

QStyle::SP_MessageBoxQuestion

messagebox-warning-icon

QStyle::SP_MessageBoxWarning

network-icon

QStyle::SP_DriveNetIcon

rightarrow-icon

QStyle::SP_ArrowRight

titlebar-contexthelp-icon

QStyle::SP_TitleBarContextHelpButton

titlebar-maximize-icon

QStyle::SP_TitleBarMaxButton

titlebar-menu-icon

QStyle::SP_TitleBarMenuButton

titlebar-minimize-icon

QStyle::SP_TitleBarMinButton

titlebar-normal-icon

QStyle::SP_TitleBarNormalButton

titlebar-shade-icon

QStyle::SP_TitleBarShadeButton

titlebar-unshade-icon

QStyle::SP_TitleBarUnshadeButton

trash-icon

QStyle::SP_TrashIcon

uparrow-icon

QStyle::SP_ArrowUp

属性类型列表

下面的表格总结咯不同属性类型的语法和意义。

类型

语法

说明

Alignment

{ top
| bottom
| left
| right
| center }*

水平和/或竖直方向的对齐方式。

示例:

QTextEdit { background-position: bottom center }

Attachment

{ scroll
| fixed }*

背景图片随内容滚动或固定不动。

Background

{ Brush
| Url
| Repeat
| Alignment }*

BrushUrlRepeatAlignment构成的序列。

Boolean

0 | 1

True(真) (1)或false(假) (0)。

示例:

QDialog { etch-disabled-text: 1 }

Border

{ Border Style
| Length
| Brush }*

边框属性的省写方式。

Border Image

none
| Url Number{4}
(stretch |repeat){0,2}

边框图片是一個由9部分(左上、中上、右上、左中、中、右中、左下、中下、右下)构成的图片。在需要一個特定尺寸的边框时,边角部分按原样使用,而顶部、右侧、底部和左侧的部分则会被拉伸或重复以达到想要的尺寸。

参考CSS3草稿规范以了解细节。

Border Style

dashed
| dot-dash
| dot-dot-dash
| dotted
| double
| groove
| inset
| outset
| ridge
| solid
| none

指定用来绘制边框的模式。参考CSS3草稿规范以了解细节。

Box Colors

Brush{1,4}

1至4个Brush,分别指定某個盒子的顶部、右侧、底部和左侧边线。如果左侧边线颜色没有指定的话,则与右侧边线相同。如果底部边线颜色没有指定的话,则与顶部边线相同。如果右侧边线颜色没有指定的话,则与顶部边线相同。

示例:

QLabel { border-color: red } /* red red red red */

QLabel { border-color: red blue } /* red blue red blue */

QLabel { border-color: red blue green } /* red blue green blue */

QLabel { border-color: red blue green yellow } /* red blue green yellow */

Box Lengths

Length{1,4}

1至4个Length,分别指定某個盒子的顶部、右侧、底部和左侧边线。如果左侧边线长度没有指定的话,则与右侧边线相同。如果底部边线长度没有指定的话,则与顶部边线相同。如果右侧边线长度没有指定的话,则与顶部边线相同。

Examples:

QLabel { border-width: 1px } /* 1px 1px 1px 1px */

QLabel { border-width: 1px 2px } /* 1px 2px 1px 2px */

QLabel { border-width: 1px 2px 3px } /* 1px 2px 3px 2px */

QLabel { border-width: 1px 2px 3px 4px } /* 1px 2px 3px 4px */

Brush

Color
| Gradient
| PaletteRole

指定一個颜色或一個渐变或调色板中的一個条目。

Color

rgb(r, g, b)
| rgba(r, g, b,a)
| hsv(h, s, v)
| hsva(h, s, v,a)
| #rrggbb
| Color Name

采用RGB (红、绿、蓝)或RGBA (红、绿、蓝、透明度(alpha))或HSV (色调、饱和度、值)或HSVA (色调、饱和度、值 、透明度)或命名颜色来指定一個颜色。 rgb()rgba()语法可使用0 到255 的整数或百分比。hsv()hsva()中的s、v 和a 的值必须在0-255 范围内;h 的值必须在 0-359 的范围。

示例:

QLabel { border-color: red } /* opaque red */

QLabel { border-color: #FF0000 } /* opaque red */

QLabel { border-color: rgba(255, 0, 0, 75%) } /* 75% opaque red */

QLabel { border-color: rgb(255, 0, 0) } /* opaque red */

QLabel { border-color: rgb(100%, 0%, 0%) } /* opaque red */

QLabel { border-color: hsv(60, 255, 255) } /* opaque yellow */

QLabel { border-color: hsva(240, 255, 255, 75%) } /* 75% blue */

注意:所允许的RGB 颜色与CSS 2.1 中允许的颜色相同,在这里列出。

Font

(Font Style | Font Weight){0,2} Font Size String

省写的字体属性。

Font Size

Length

某個字体的尺寸。

Font Style

normal
| italic
| oblique

某個字体的风格。

Font Weight

normal
| bold
| 100
| 200
...
| 900

某個字体的重量。

Gradient

qlineargradient
|qradialgradient
|qconicalgradient

指定渐变填充方式。有3种渐变填充方式:

  • •.Linear (线性)渐变在开始和结束点之间对颜色进行插值。

  • •.Radial (放射)渐变在一個围绕焦点的圆上的焦点与结束点之间对颜色进行插值。

  • •.Conical (圆锥)渐变回绕一個中心点进行颜色的插值。

渐变是以对象边界模式(Object Bounding Mode)指定的。想象一下一個盒子,渐变就是在这個盒子中渲染的,它的左上角是(0, 0),右下角是(1, 1)。然后,渐变参数就是以从0 到1 的百分比的方式指定的。这些值会在运行时映射(extrapolated)到实际的盒子坐标。可以指定位于盒子边界以外的值(比如说-0.6或1.8)。

警告:结束点必须以递增的顺序排列。

示例:

/* 从白色到绿色的线性渐变 */

QTextEdit {

background: qlineargradient(x1:0, y1:0, x2:1, y2:1,

stop:0 white, stop: 0.4 gray, stop:1 green)

}

/* 从白色到绿色的线性渐变 */

QTextEdit {

background: qlineargradient(x1:0, y1:0, x2:1, y2:1,

stop:0 white, stop: 0.4 rgba(10, 20, 30, 40), stop:1 rgb(0, 200, 230, 200))

}

/* 从白色到绿色的圆锥渐变 */

QTextEdit {

background: qconicalgradient(cx:0.5, cy:0.5, angle:30,

stop:0 white, stop:1 #00FF00)

}

/* 从白色到绿色的放射渐变 */

QTextEdit {

background: qradialgradient(cx:0, cy:0, radius: 1,

fx:0.5, fy:0.5, stop:0 white, stop:1 green)

}

Icon

(Url (disabled |active | normal |selected)? (on |off)? )*

由url、QIcon::ModeQIcon::State组成的列表。

示例:

* {

file-icon: url(file.png),

url(file_selected.png) selected;

}

QMessageBox {

dialogbuttonbox-buttons-have-icons: true;

dialog-ok-icon: url(ok.svg);

dialog-cancel-icon: url(cancel.png), url(grayed_cancel.png) disabled;

}

Length

Number (px | pt |em | ex)?

一個数字加上一個单位。CSS 标准建议浏览器必须忽略对无效值的声明。在Qt 中,指定单位是强制性(mandatory)的。为咯兼容早期版本的Qt,不带单位的数字在大部分情况下都会被当成以像素(pixels)为单位。支持的单位包括:

  • •.px: 像素

  • •.pt: 一個点的大小(也就是1/72 英寸)

  • •.em: 在当前字体中‘M’这個字母的宽度

  • •.ex: 在当前字体中‘x’这個字母的高度

Number

一個10进制整数或一個实数

示例:018+127-25512.34-.5, 0009

Origin

margin
| border
| padding
| content

指明要使用4個矩形中的哪一個。

  • •.margin: 边距矩形。边距位于边框之外。

  • •.border: 边框矩形。如果绘制边框的话,就绘制在这里。

  • •.padding: 填充矩形。与边距不同,填充是位于边框之内的。

  • •.content: 内容矩形。这個矩形就是实际的内容,不包含任何的填充、边框及边距。

参考盒状模型

PaletteRole

alternate-base
| base
| bright-text
| button
| button-text
| dark
| highlight
| highlighted-text
| light
| link
| link-visited
| mid
| midlight
| shadow
| text
| window
| window-text

这些值对应于当前部件的QPalette(调色板)中的Color roles(颜色角色)。

示例,

QPushButton { color: palette(dark); }

Radius

Length{1, 2}

1至2个Length。如果只指定1個的话,则这個值会被用作边角处的四分之一圆的半径。如果指定咯2個的话,则第一個会被用作一個四分之一椭圆的水平半径,第二個会被用作竖直半径。

Repeat

repeat-x
| repeat-y
| repeat
| no-repeat

这個值用来指示重复模式。

  • •.repeat-x: 在水平方向上重复。

  • •.repeat-y: 在竖直方向上重复。

  • •.repeat: 在两个方向上都重复。

  • •.no-repeat: 不重复。

Url

url(filename)

filename指的是本地磁盘上或是使用Qt资源系统储存的一個文件的名字。设置一個图片的话,会隐式地设置那個元素的宽度和高度。

伪状态列表

支持以下伪状态:

伪状态

说明

:active

当这個部件位于一個活跃窗口中时,就处于这种状态。

:adjoins-item

当一個QTreeView::branch与一個条目相邻时,就处于这种状态。

:alternate

QAbstractItemView::alternatingRowColors()被设置成true(真)时,在绘制QAbstractItemView的行时,每个交替行都具有这個状态。

:bottom

这個条目位于底部。比如,某個QTabBar,它的标签位于底部。

:checked

这個条目被选中。比如,QAbstractButtonchecked(选中)状态。

:closable

这個条目可被关闭。比如,某個QDockWidget,它的QDockWidget::DockWidgetClosable特性被开启。

:closed

这個条目处于关闭状态。比如,在一個QTreeView中的某個处于折叠(non-expanded)状态的条目

:default

这個条目是默认的。比如,一個默认(default)的按钮(QPushButton),或者一個菜单(QMenu)中的默认动作。

:disabled

这個条目被禁用(disabled)。

:editable

这個组合框(QComboBox)可被编辑。

:edit-focus

这個条目拥有编辑焦点(参考QStyle::State_HasEditFocus)。这個状态只在Qt Extended 程序中有效。

:enabled

这個条目处于启用(enabled)状态。

:exclusive

这個条目是一個互斥的条目组中的一個。比如,在一個互斥的QActionGroup中的一個菜单条目。

:first

这個条目是(一個列表中的)第一個。比如,一個QTabBar中的第一個标签。

:flat

这個条目是平的(flat)。比如,一個平的(flat)按钮(QPushButton)。

:floatable

这個条目可浮动。比如,一個QDockWidget,它的QDockWidget::DockWidgetFloatable特性被开启。

:focus

这個条目拥有输入焦点(input focus)。

:has-children

这個条目拥有子代对象。比如,在一個QTreeView中,拥有子代条目的条目。

:has-siblings

这個条目拥有兄弟姐妹(siblings)。比如,在一個QTreeView中,拥有兄弟姐妹的条目。

:horizontal

这個条目是水平的。

:hover

鼠标正悬停于这個条目之上。

:indeterminate

这個条目具有不确定状态。比如,一個被部分选中(partially checked)的QCheckBoxQRadioButton

:last

这個条目是(一個列表中的)最后一個。比如,一個QTabBar中的最后一個标签。

:left

这個条目被放置在左边。比如,一個QTabBar,它的标签放置在左边。

:maximized

这個条目被最大化。比如,一個最大化的QMdiSubWindow

:middle

这個条目(在一個列表中)位于中间。比如,在一個QTabBar中,某個既不在开关也不在末尾的标签。

:minimized

这個条目被最小化。比如,一個最小化的QMdiSubWindow

:movable

这個条目可到处移动。比如,某個QDockWidget,它的QDockWidget::DockWidgetMovable特性被开启。

:no-frame

这個条目没有框架(frame)。比如,一個不带框架的QSpinBoxQLineEdit

:non-exclusive

这個条目是某個非互斥的条目组中的一個。比如,在某個非互斥的QActionGroup中的一個菜单条目。

:off

对于可被切换的条目来说,这個对应着它的“关闭”("off")状态。

:on

对于可被切换的条目来说,这個对应着它的“开启”("on")状态。

:only-one

这個条目是(某個列表中)唯一的一個。比如,某個QTabBar中唯一的一個标签。

:open

这個条目处于打开(open)状态。比如,在一個QTreeView中的某個已展开(expanded)的条目,或带有一個已打开的菜单的一個QComboBoxQPushButton

:next-selected

(列表中的)下一個条目被选中。比如,在一個QTabBar中的选中标签是当前这個标签的下一個。

:pressed

这個条目正被鼠标按下。

:previous-selected

(列表中的)上一個条目被选中。比如,在某個QTabBar中,位于当前选中的标签的下一個的标签。

:read-only

这個条目被标记为只读的或不可编辑的。比如,一個只读的QLineEdit或一個不可编辑的QComboBox

:right

这個条目被放置在右边。比如,某個QTabBar,它将其标签放置在右边。

:selected

这個条目被选中。比如,在一個QTabBar中被选中的那标签,或在一個QMenu中被选中的那個条目。

:top

这個条目被放置在顶部。比如,某個QTabBar,它将其标签放置在顶部。

:unchecked

这個条目处于未选中状态(unchecked)。

:vertical

这個条目是竖直的。

:window

这個部件是一個窗口(也就是说,顶级部件)。

子控件列表

以下子控件是可用的:

子控件

说明

::add-line

用来为QScrollBar增加一行的按钮。

::add-page

在一個QScrollBar中滑块(handle)(slider)与add-line(加一行)之间的区域。

::branch

QTreeView的分支指示器。

::chunk

QProgressBar的进度块。

::close-button

一個QDockWidget的或者一個QTabBar中的标签的关闭按钮。

::corner

在一個QAbstractScrollArea中的两個滚动条之间的边角。

::down-arrow

QComboBoxQHeaderView(排序指示器)、QScrollBarQSpinBox的向下箭头。

::down-button

QScrollBarQSpinBox的向下按钮。

::drop-down

QComboBox的下拉按钮。

::float-button

QDockWidget的浮动(float)按钮。

::groove

QSlider的滑动槽。

::indicator

QAbstractItemViewQCheckBoxQRadioButton、可选中的QMenu条目或可选中的QGroupBox的指示器。

::handle

QScrollBarQSplitterQSlider的滑块(handle)(slider)。

::icon

QAbstractItemViewQMenu的图标。

::item

QAbstractItemViewQMenuBarQMenuQStatusBar中的一個条目。

::left-arrow

QScrollBar的左箭头。

::left-corner

QTabWidget的左侧边角。比如,这個控件可用来控制某個QTabWidget中的左侧边角部件的位置。

::menu-arrow

一個带有菜单的QToolButton的箭头。

::menu-button

QToolButton的菜单按钮。

::menu-indicator

QPushButton的菜单指示器。

::right-arrow

QMenuQScrollBar的右侧箭头。

::pane

QTabWidget的方框(pane)(frame)。

::right-corner

QTabWidget的右侧边角。比如,这個控件可用来控制某個QTabWidget中的右侧边角部件的位置。

::scroller

QMenuQTabBar的滚动器。

::section

QHeaderView的一個区段(section)。

::separator

QMenu(菜单)的分隔符,或一個QMainWindow(主窗口)中的分隔符。

::sub-line

QScrollBar中用来减一行的按钮。

::sub-page

在一個QScrollBar中位于滑块(handle)(slider)与sub-line(减一行按钮)之间的区域。

::tab

QTabBarQToolBox中的标签。

::tab-bar

QTabWidget的标签条。这個子控件仅用来控制QTabBarQTabWidget内部的位置。要设置其样式,则使用::tab子控件。

::tear

QTabBar的离合(tear)指示器。

::tearoff

QMenu的离合(tear-off)指示器。

::text

QAbstractItemView的文字。

::title

QGroupBoxQDockWidget的标题。

::up-arrow

QHeaderView(排序指示器)、QScrollBarQSpinBox的向上箭头。

::up-button

QSpinBox的向上按钮。

参考自定义QPushButton的菜单指示器子控件示例以了解如何对子控件进行自定义。

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2011/11/%e2%80%a2-qt4-7%e6%96%87%e6%a1%a3%e7%bf%bb%e8%af%91%ef%bc%9aqt%e6%a0%b7%e5%bc%8f%e5%8d%95%e5%8f%82%e8%80%83qt-style-sheets-reference/

十一 27 2011

QtSDK1.1.3中QtCreator2.3.1的问题

- no title specified


QtSDK1.1.3中QtCreator2.3.1的问题

当妳同时打开咯几个工程的时候,在QtCreator中使用“工具”>”外部”>”linguist”>”Update translations(lupdate)”来调用lupdate更新翻译信息时,只会更新当前打开的第一个工程的翻译信息,而不是更新当前活跃的那个工程的翻译信息。

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2011/11/qtsdk1-1-3%e4%b8%adqtcreator2-3-1%e7%9a%84%e9%97%ae%e9%a2%98/

十一 22 2011

Qt4.7文档翻译:QTest命名空间,QTest Namespace


Qt4.7文档翻译:QTest命名空间,QTest Namespace

函数文档

void QTest::mouseClick ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1 )

在某個部件widget上模拟一個可带修饰符modifier的鼠标按钮button点击。点击的位置是由pos定义的;默认位置是部件的中心。如果指定咯延迟delay的话,这個测试会在按下按扭和松开按钮之前等待指定的毫秒长的时间。

参考QTest::mousePress()和QTest::mouseRelease()

Permanent link to this article: http://stupidbeauty.com/ShangHaiYanMoJi/2011/11/qt4-7%e6%96%87%e6%a1%a3%e7%bf%bb%e8%af%91%ef%bc%9aqtest%e5%91%bd%e5%90%8d%e7%a9%ba%e9%97%b4qtest-namespace/

旧文章 «