qt开发过程中遇到的问题整理

来源:互联网 发布:ug8.0数控编程实例 编辑:程序博客网 时间:2024/05/16 14:36

1.怎么给QDialog标题栏更换背景图片?

想法一:变通一下,去掉系统默认的标题栏,然后自己在dialog顶部弄个图片+最大最小化关闭按钮,这样的话,自己还得添加移动窗体的代码处理。

想法二:可以想办法在style里面绘制。

2.移动无边框窗体

想法一:

void EditDialog::mousePressEvent(QMouseEvent *event){    if (event->button() == Qt::LeftButton) {        m_Drag = true;        m_DragPosition = event->globalPos() - this->pos();        event->accept();    }}void EditDialog::mouseMoveEvent(QMouseEvent *event){    if (m_Drag && (event->buttons() && Qt::LeftButton)) {        move(event->globalPos() - m_DragPosition);        event->accept();    }}void EditDialog::mouseReleaseEvent(QMouseEvent *){    m_Drag = false;}

如果不考虑跨平台,只针对Windows平台,那么我建议用Windows下的标准方法,模拟标题栏移动消息,既简单又高效。
想法二:

void MainWindow::mousePressEvent(QMouseEvent *event){    if (ReleaseCapture())        SendMessage(HWND(this->winId()), WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);    event->ignore();}

这样,在拖动窗体时只会在松开鼠标时才将窗体移动过去,这样就避免了第一种方法的低效率问题。

0 0
原创粉丝点击