• 6117阅读
  • 7回复

[提问]如何使QPushButton的弹出菜单在右侧弹出 [复制链接]

上一主题 下一主题
离线xiangxq
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-25
如题,
请大侠们指教。
谢谢!
离线jdwx

只看该作者 1楼 发表于: 2011-11-25
回 楼主(xiangxq) 的帖子
声明一个新menu,把QAction取出来填进新menu,menu.exec(pos),菜单就根据pos(屏幕坐标)的位置显示,哪里都可以。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线xiangxq

只看该作者 2楼 发表于: 2011-11-25
可以给一个例子吗?
谢谢!

我的代码:
QMenu *menu = new QMenu(this);
QAction *action1 = new QAction("action1", this);
QAction *action2 = new QAction("action2", this);
menu->addAction(action1);
menu->addAction(action2);
QPushButton *btn = new QPushButton("test", this);
tn->setGeometry(130, 200, 60, 30);
btn->setMenu(menu);
离线daily

只看该作者 3楼 发表于: 2011-11-25
Push buttons with popup menus shown in the Plastique widget style (left) and Cleanlooks widget style (right).
离线jdwx

只看该作者 4楼 发表于: 2011-11-25

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QAction *action1 = new QAction("action1", this);
    QAction *action2 = new QAction("action2", this);
    m_Menu.addAction(action1);
    m_Menu.addAction(action2);
    m_Button = new QPushButton(this);
    m_Button->setText("Push Button");
    m_Button->setGeometry(130, 200, 100, 30);
    connect(m_Button,SIGNAL(clicked()),this,SLOT(buttonClicked()));
}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::buttonClicked()
{
    qDebug()<<"Clicked";
    QPoint p = m_Button->geometry().bottomRight();
    m_Menu.exec(mapToGlobal(p));
}

就是没有了小箭头。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线daily

只看该作者 5楼 发表于: 2011-11-25
The Array need call setMenu() method.
离线daily

只看该作者 6楼 发表于: 2011-11-25
See it.

ssss::ssss(QWidget *parent, Qt::WFlags flags)
    : QWidget(parent, flags)
{
    ui.setupUi(this);
    QAction *action1 = new QAction("action1", this);
    QAction *action2 = new QAction("action2", this);
    m_Menu.addAction(action1);
    m_Menu.addAction(action2);
    ui.pushButton->setMenu(&m_Menu);
    ui.pushButton->disconnect();    connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(buttonClicked()));

}

ssss::~ssss()
{

}
void ssss::buttonClicked()
{
    QPoint p = ui.pushButton->geometry().bottomRight();
    m_Menu.exec(mapToGlobal(p));


}
离线xiangxq

只看该作者 7楼 发表于: 2011-11-25
谢谢各位!
问题已经解决!
按照4楼的方法!
感谢jdwx和daily
快速回复
限100 字节
 
上一个 下一个