Qt设置背景时,一般使用painter来绘制,具体步骤如下。
.h加入painter事件
protected:
void paintEvent(QPaintEvent *event);
.cpp中实现绘制
void cWidget::paintEvent(QPaintEvent * event)
{
QPainter painter(this);
painter.save();
painter.drawPixmap(rect(), QPixmap(":/img/backgroud.png"));
painter.restore();
}
当然,如果图片的尺寸是固定的,还要再构造函数中禁止窗口伸缩。
定义和图片一样的长和宽:
#define WIDGET_WIDTH 1024
#define WIDGET_HEIGHT 640
禁止伸缩:
setWindowFlags(windowFlags() & ~Qt::WindowMinMaxBunttonHint);
setMinimumSize(IDGET_WIDTH, WIDGET_HEIGHT);
setMaximumSize(WIDGET_WIDTH, WIDGET_HEIGHT);
setAutoFillBackground(true);
如果想要打开后窗口居中显示,还需要设置窗口属性:
或许桌面的长宽信息:
QDesktopWidget *desktop = QApplication::desktop();
获取显示起始位置:
int startX = (desktop->width()-WIDGET_WIDTH)/2;
int startY = (desktop->height()-WIDGET_HEIGHT)/2;
设置参数:
setGeometry(startX, startY, WIDGET_WIDTH, WIDGET_HEIGHT);
完成。
绘制小部件时操作类似,只是一般要设置抗锯齿属性。
painter.setRenderHint(QPainter::Antialiasing,true);
//QPainter::Antialiasing //绘图抗锯齿
//QPainter::TextAntialiasing //绘制的字体抗锯齿
//painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);