-7 c++ qt qpainter qpushbutton
我想创建QPushButton与QIcon左对齐(不向中心为默认)和文本居中对齐.我不想使用样式表.我知道可能会使用,QPainter但我无法做到.我几乎没有线索并试过这段代码:
void MyPushButton::paintEvent(QPaintEvent *)
{
QStylePainter painter(this);
QStyleOptionButton opt;
initStyleOption(&opt);
painter.drawItemPixmap(opt.rect, Qt::AlignLeft, opt.icon);
painter.drawItemText(opt.rect, Qt::AlignCenter, palette(), 1, opt.text);
painter.drawPrimitive(QStyle::PE_PanelButtonCommand, opt);
}
Run Code Online (Sandbox Code Playgroud)
这会产生此错误消息
没有匹配函数来调用'QStylePainter :: drawItemPixmap(QRect&,Qt :: AlignmentFlag,QIcon&)'painter.drawItemPixmap(opt.rect,Qt :: AlignCenter,opt.icon);
上面的代码有什么问题?
你得到了
此错误代码错误:没有用于调用'QStylePainter :: drawItemPixmap(QRect&,Qt :: AlignmentFlag,QIcon&)'painter.drawItemPixmap(opt.rect,Qt :: AlignCenter,opt.icon)的匹配函数;
因为drawItemPixmap画了一个像素图.不是一个图标.所以你需要做的就是使用pixmap()访问器获取图标pixmap .
更改
painter.drawItemPixmap(opt.rect, Qt::AlignLeft, opt.icon);
Run Code Online (Sandbox Code Playgroud)
至
// or whaever size you want
painter.drawItemPixmap(opt.rect, Qt::AlignLeft, opt.icon.pixmap(QSize(16,16)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |