• 5058阅读
  • 6回复

关于widget加到toolbar后位置的问题 [复制链接]

上一主题 下一主题
离线qylibohao
 
只看楼主 倒序阅读 楼主  发表于: 2011-10-18
如图,我写了一个widgetbutton 然后调用toolbar的addwidget把这两个widget加到了toolbar里面,
然后我想在点击button的时候弹出我的菜单,我想把菜单的位置调到widget的正下方,但是获取widget的
正确位置出错,麻烦各位帮下忙,如何获取加到toolbar的widget的位置。



离线dbzhang800

只看该作者 1楼 发表于: 2011-10-18
只需要注意一点:搞清楚你获取widget的位置坐标时,该坐标是相对谁的(全局屏幕,还是其父窗口),而你需要的又是相对于谁的坐标。
离线jdwx

只看该作者 2楼 发表于: 2011-10-18
引用第1楼dbzhang800于2011-10-18 10:20发表的  :
只需要注意一点:搞清楚你获取widget的位置坐标时,该坐标是相对谁的(全局屏幕,还是其父窗口),而你需要的又是相对于谁的坐标。

menu需要屏幕坐标,也要把widget的坐标转换到屏幕坐标。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dbzhang800

只看该作者 3楼 发表于: 2011-10-18
引用第2楼jdwx于2011-10-18 10:33发表的  :
menu需要屏幕坐标,也要把widget的坐标转换到屏幕坐标。

QMenu也是QWidget的派生类,所以没什么特殊的。
之所以需要屏幕坐标,是因为它是顶级窗体,即: QWidget::isWindow ()  为true

离线qylibohao
只看该作者 4楼 发表于: 2011-10-18
我获取toolbar 的位置,在调用maptoGlobal 转换成全局坐标之后再设定弹出菜单的位置就可以了。
3q
离线gomcarter
只看该作者 5楼 发表于: 2011-10-19

QMenu *menu = new QMenu;
QAction *ButtonMenu= new QAction("ButtonMenu");
ButtonMenu->setMenu(Menu);
mainToolBar->addAction(ButtinMenu);
离线jorneyr

只看该作者 6楼 发表于: 2011-10-24
void TipWidget::updateTips(const QStringList &tips) {
    if (tips.count() == 0) {
        hide();
        return;
    }

    model->setStringList(tips);

    QPoint gp = edit->mapToGlobal(QPoint(0, edit->size().height() - 1));
    move(parentWidget()->mapFromGlobal(gp));
    resize(edit->size().width(), 150);
    show();
}
快速回复
限100 字节
 
上一个 下一个