QT如何实现这个功能
如图,我要在点击上排的按钮后,弹出下面这个对话框。这个对话框要是在原来整个界面之上,不可移动,并且还要正好定位于我所点击的按钮的正下方。(注:弹出的对话框背后的界面同按钮所在的widget不是同一布局管理器。)
请问有谁知道用QT怎么实现么?
[最优解释]
你好,我说下个人的看法:
1:弹出的对话框可以设定坐标位置,通过setGeometry ( int, int, int, int ),直接设定到具体位置即可;
2:每当点击这个上排的按钮之后,对上排按钮加上QSS,也就是上排按钮有背景色,然后使得弹出框show出来,并且弹出框设置置顶调用setWindowFlags(Qt::WindowStaysOnTopHint)即可,然后当点击弹出框的某个项的时候,可以关闭弹出框或者当失去焦点的时候,让弹出框hide或者close均可,根据自己需求来设计;
3:具体的上排按钮+弹出框的样式,这个可以通过自己设计+QSS去实现好的.
本人做的是经典Qt,但是个人感觉QML实现的话可能更炫,但是不怎么熟悉.针对经典Qt怎么实现,我就这点想法,你参考下,谢谢!
[其他解释]
用graphicsitem吧 感觉窗体不是很规则 而且是不是还期望点击下面不同的边框 触发不同的 事件
[其他解释]
小窗口貌似后面有阴影
[其他解释]
求更多解决办法。
[其他解释]
求更多解决办法,谢谢。
[其他解释]
这个问题可以这样解决。
void Widget::updatePosition(){ QWidget *widget = focusWidget();//获取当前焦点所在控件 if (!widget) return; QRect widgetRect=widget->rect();//获取控件的几何信息,即宽高 QPoint panelPos = QPoint(widgetRect.left(), widgetRect.bottom());//以控件的左上角为原点,控件的左下角的坐标 panelPos = widget->mapToGlobal(panelPos);//转换为全局即以整个屏幕的左上角为原点的坐标 show_widget->move(panelPos);//show_widget->setGeometry(QRect(panelPos,QSize(10,10)));//输入面板的左上角移动到该坐标下}