0
QPainter p(this);

for (int i = 0; i < this->actions().count(); ++i)
 {

      QAction *action = this->actions().at(i);
      QRect actionRect = ...........
      QStyleOptionMenuItem opt;
      initStyleOption(&opt, action);
      opt.rect = actionRect;
      QString strPicPath="/h/downloads/tableviewenabledBackGroundImageId.jpg";
      QPixmap pic(strPicPath);
      pic=pic.scaled(opt.rect.size());
      opt.palette.setBrush(QPalette::Background,QBrush(pic));

      p.fillRect(opt.rect,opt.palette.background());

      style()->drawControl(QStyle::CE_MenuItem, &opt, &p, this);
 }

我需要获取 QMenu 的 actionRect 以在不使用 Qt 样式表的情况下绘制选定的菜单项。提前致谢

4

1 回答 1

0

试试 this->actionGeometry(QAction*),它应该返回正确的 QRect。我在我的一个程序中使用了它,它运行得很好。

于 2017-08-29T07:30:13.190 回答