• 6176阅读
  • 3回复

[提问]怎样才能禁止让用户通过对话框的标题栏来移动整个对话框,请高手们赐教!!! [复制链接]

上一主题 下一主题
离线gjf123
 

只看楼主 倒序阅读 楼主  发表于: 2011-03-18
目的是这样的,就是用户在主界面按下一个按钮后,弹出一个对话框后,不让用户通过对话框的标题来移动整个对话框,就是让这个对话框固定在当前位置:

论坛中以前有个帖子:
http://www.qtcn.org/bbs/read.php?tid=26508
尝试过了就是实现不了,对话框子类化代码如下:

在mydlg1.cpp中添加如下代码
void mydlg::mouseMoveEvent(QMouseEvent *event)
{
        //event->setAccepted(false);
        event->ignore();
}

void mydlg::moveEvent(QMoveEvent *event)
{
        event->ignore();
        //event->setAccepted(false);
}

void mydlg::dragMoveEvent(QDragMoveEvent *event)
{
        event->ignore();
    //event->setAccepted(false);
}

在mydlg1.h中添加声明
public:
    explicit mydlg(QWidget *parent= 0);
    void closeEvent(QCloseEvent *event);
    void mouseMoveEvent(QMouseEvent * event);
    void moveEvent(QMoveEvent *event);
    void dragMoveEvent(QDragMoveEvent *event);

结果:按住对话框标题栏,还是可以拖动



离线kummar
只看该作者 1楼 发表于: 2011-03-18
回 楼主(gjf123) 的帖子
那就不用标题栏了嘛,实在需要就自己设计一个标题栏
离线jdwx

只看该作者 2楼 发表于: 2011-03-18
Re:回 楼主(gjf123) 的帖子
引用第1楼kummar于2011-03-18 18:16发表的 回 楼主(gjf123) 的帖子 :
那就不用标题栏了嘛,实在需要就自己设计一个标题栏

好办法!
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wxj120bw

只看该作者 3楼 发表于: 2011-03-18
其实窗口的标题栏是操作系统维护的 要想实现窗口无法移动 除了楼上的办法 还有就是过滤掉系统标题栏的信号 要想过滤掉信号 需要子类化对话框 并在winEvent函数(好像有这个) 对信号进行过滤
快速回复
限100 字节
 
上一个 下一个