我的问题与此问题基本相同,但适用于Qt C++框架.
我通过使用标志Qt :: QPopup |继承QWidget来实现一个弹出窗口 Qt的:: QWindow.我希望这个窗口是可移动的和可调整大小的,我现在通过使用以下代码中的鼠标事件来实现这一点:
void TextPopup::mousePressEvent(QMouseEvent* event)
{
offset = event->pos();
QWidget::mousePressEvent(event);
}
void TextPopup::mouseMoveEvent(QMouseEvent* event)
{
if(event->buttons() & Qt::LeftButton)
if(resizeMode) {
QPoint p = mapToGlobal(event->pos()) - geometry().topLeft();
resize(p.x(), p.y());
} else
move(mapToParent(event->pos() - offset));
else {
QPoint diff = geometry().bottomRight() - mapToGlobal(event->pos());
if(diff.x() <= 6 && diff.y() <= 6) {
if(!resizeMode) {
setCursor(Qt::SizeFDiagCursor);
resizeMode = true;
}
} else {
if(resizeMode) {
setCursor(Qt::SizeAllCursor);
resizeMode = false;
}
} …Run Code Online (Sandbox Code Playgroud)