由于使用setMent()接口,按钮的下拉菜单出现时,同时按钮会有倒三角型的标志出现。 因此琢磨了一段时间,自定义下拉菜单。
头文件定义:
class MenuButton :Public QPushButton
{
public:
MenuButton(QString name = QString(), QWidget * parent = NULL);
pretect:
virtual void resizeEvent(QResizeEvent *event);
virtual void mousePressEvent ( QMouseEvent * e ); //单击事件
private:
QMenu *menu;
}
源文件:
virtual void resizeEvent(QResizeEvent *event)
{
menu->setFixedWidth(event->size().width()); ///菜单宽度与按钮保持一致
}
virtual void mousePressEvent ( QMouseEvent * e )
{
/*****核心代码*******/
QPoint pos;
pos.setY(this->geometry().height());
menu->exec(this->mapToGlobal(pos)); //设置菜单出现的位置, 在按钮的正下方出现
}
我也是经过许多尝试,才弄出来的,希望对你们有用。
效果图: