获取QMenu的ActionRect以绘制图像

时间:2017-06-01 05:03:58

标签: qt qmenu qaction qmenubar

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的样式表。 提前谢谢

1 个答案:

答案 0 :(得分:0)

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