0
我試圖在Qt中創建一個彈出文本編輯器。我遇到的問題是,因爲我正在使對話框無邊界,所以我必須自己調用move()函數。這導致了我想弄明白的一些奇怪的行爲。我已經注意到以下情況:Qt QDialog在調用move()時會發生波濤洶涌()
- 如果我在沒有文本編輯器的情況下製作盒子,那麼移動很好。只有當我添加編輯器時,它會變得不穩定。
- 如果我使它成爲一個普通的對話框(而不是在構造函數中使用Qt :: Popup標誌),那麼在編輯器或不使用編輯器的情況下,運動都很好。
下面是一些代碼來演示:
#include "textpopup.h"
#include <QPoint>
#include <QMouseEvent>
#include <QPushButton>
#include <QDebug>
TextPopup::TextPopup(QWidget* parent) :
QDialog(parent, Qt::Popup) // removing Qt::Popup flag gets rid of choppy-ness
{
setLayout(&layout);
layout.addWidget(&textEdit); // removing this gets rid of choppy-ness
resize(200, 200);
setFocusPolicy(Qt::StrongFocus);
}
void TextPopup::mousePressEvent(QMouseEvent* event)
{
offset = event->globalPos() - frameGeometry().topLeft();
previous = event->globalPos();
QDialog::mousePressEvent(event);
}
// move whenever user drags widget (does not apply to text editor)
void TextPopup::mouseMoveEvent(QMouseEvent* event)
{
qDebug() << "move";
if(event->buttons() == Qt::LeftButton) {
move(event->globalPos() - offset);
}
}
您是否嘗試過使用Qt :: Dialog標誌而不是Qt :: Popup標誌?你在使用'Qt :: Popup'標誌時尋求什麼? – Abhijith 2011-06-12 03:45:14
我不想使用Qt :: Dialog標誌的標題欄。 – buck 2011-06-13 03:25:41