【发布时间】:2011-08-18 08:02:43
【问题描述】:
如何使用样式表将图像添加到 QT 中表单的底部或顶部。 例如,我想添加您可以在下图中看到的图像,然后设置表单的填充:
图片链接: http://0000.2.img98.net/out.php/i11716_bg-header2.jpg
请用 CSS 命令解释一下。
【问题讨论】:
标签: c++ qt stylesheet
如何使用样式表将图像添加到 QT 中表单的底部或顶部。 例如,我想添加您可以在下图中看到的图像,然后设置表单的填充:
图片链接: http://0000.2.img98.net/out.php/i11716_bg-header2.jpg
请用 CSS 命令解释一下。
【问题讨论】:
标签: c++ qt stylesheet
您可以使用 qss (css) 来实现。但是为了在您的自定义 QWidget 中启用样式表,您必须处理 Paint 事件。
mywidget.cpp
void QMyWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
在资源中添加你的css(qss)并添加别名,将用作加载的文件名。
您可以在主窗口中添加此方法,以加载样式表。
我的主窗口.cpp
void QMyMainWindow::loadStyleSheet(QString path)
{
QFile data(path);
QString style;
if(!data.open(QFile::ReadOnly))
return false;
QTextStream styleIn(&data);
style = styleIn.readAll();
data.close();
qApp->setStyleSheet(qApp->styleSheet().append(style));
}
然后用QSS(CSS)文件的资源别名调用这个函数。您可以在构造函数或 resize 事件(用于移动开发)中执行此操作,以跟踪和加载针对不同分辨率的不同样式。
【讨论】:
background-image: url('path_in_resource_to_img_alias');