Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QWidgetAction溢出菜单图标列_Qt_Qmenu - Fatal编程技术网

Qt QWidgetAction溢出菜单图标列

Qt QWidgetAction溢出菜单图标列,qt,qmenu,Qt,Qmenu,在Windows上使用Qt 4.8.2 我把用户信息放在一个QWidgetAction下拉菜单中。但是QWidgetAction的小部件溢出了通常显示动作图标的左栏: 代码如下: QMenu *menu = new QMenu; QIcon icon(...); QLabel *iconLabel = new QLabel; iconLabel->setPixmap(icon.pixmap(32, 32)); // XXX what size? QLabel *userName =

在Windows上使用Qt 4.8.2

我把用户信息放在一个QWidgetAction下拉菜单中。但是QWidgetAction的小部件溢出了通常显示动作图标的左栏:

代码如下:

QMenu *menu = new QMenu;

QIcon icon(...);
QLabel *iconLabel = new QLabel;
iconLabel->setPixmap(icon.pixmap(32, 32)); // XXX what size?

QLabel *userName  = new QLabel("user name");
QLabel *userEmail = new QLabel("Rfoo@bar.com");

// Layouts
QVBoxLayout* vbox = new QVBoxLayout();
vbox->addWidget(userName);
vbox->addWidget(userEmail);

QHBoxLayout* hbox = new QHBoxLayout;
hbox->addWidget(iconLabel);
hbox->addLayout(vbox);

// container widget
QWidget* widget = new QWidget;
widget->setLayout(hbox);

// Widget Action
QWidgetAction* widgetAction = new QWidgetAction(menu);
widgetAction->setDefaultWidget(widget);

menu->addAction(widgetAction);
menu->addSeparator();
menu->addAction("P....... P.......");
menu->addSeparator();
menu->addAction("Sign Out");
如果我从小部件中删除pixmap并将其设置为QWidgetAction的图标,小部件仍然会溢出到左边的列中,并且图标不会显示

我想找出以下解决方案之一:

  • 防止QWidgetAction溢出到菜单的图标列中
  • 设置QWidgetAction的图标并将其显示在图标列中
  • 完全删除菜单的图标列
    谢谢

    修好了吗?它是可以破解的,但是此列的宽度会根据是否存在图标而改变。。。