0:QMdiArea中添加子窗口后,想固定or调整窗口的大小

需要在addSubWindow()函数调用后返回子窗口的指针,然后再设置子窗口的大小

注意设置imagelabel的大小是没有效果的,imagelabel只是作为一个widget添加到了子窗口中

QImage colorImage(filename);

QLabel * imagelabel =new QLabel;

imagelabel->setPixmap(QPixmap::fromImage(colorImage));

imagelabel->setAttribute(Qt::WA_DeleteOnClose);

imagelabel->setWindowTitle(title);

imagelabel->setFixedSize(colorImage.size()); //没有效果哦

imagelabel->setMaximumSize(colorImage.size()); //没有效果哦

imagelabel->setMinimumSize(colorImage.size()); //没有效果哦

ui->mdiArea->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

QMdiSubWindow *sw =ui->mdiArea->addSubWindow(imagelabel);

sw->setFixedSize(colorImage.size().width()+10,colorImage.size().height()+30); //有效果哦

imagelabel->show();

1:重写QPressEvent and QMoveEvent实现在无框架窗口中拖动widget时,主窗口位置移动

void Form::mousePressEvent(QMouseEvent *event)

{

if (event->button() == Qt::LeftButton) {

dragPosition = event->globalPos() - frameGeometry().topLeft();

event->accept();

}

}

void Form::mouseMoveEvent(QMouseEvent *event)

{

if (event->buttons() & Qt::LeftButton)

{

move(event->globalPos() - dragPosition);

event->accept();

}

}

2:在主窗口中重写 bool eventFilter(QObject target, QEvente)

这样做的好处是,只需要这个eventFilter,就可以处理所有子widget的事件处理函数了

非常强大的功能

实现方法也非常容易:

##1:在构造函数中注册相关子widget,这样主窗口就可以事先捕获到本来应该传递给子widget的事件

ui->pushButton->installEventFilter(this);

##2:在eventFilter(QObject *target, QEvent *e)函数中,实现对子窗口事件的处理

如下为一个例子:

bool eventFilter(QObject *target, QEvent *e)

{

if(target == ui->pushButton) //确实事件本来应该传递的对象

{

QMouseEvent *temp=(QMouseEvent *)e; //强制事件类型转换

if(e->type() == QEvent::MouseButtonPress)//确定事件处理类型

{

//对事件进行处理

qcout<

pos = temp->globalPos() - frameGeometry().topLeft();

temp->accept();

}

if(e->type()== QEvent::MouseMove) //确定事件处理类型

{

//对事件进行处理

qcout<

move(temp->globalPos() - pos);

temp->accept();

}

}

return false;

}

##关于QEvent的type(),我们可以看下面的网址(当然在Qt官网查也是可以的):

http://www.xuebuyuan.com/2147501.html

4:实现主窗口透明,子widet不透明的方法

##1:构造函数中添加如下函数

setWindowFlags(Qt::FramelessWindowHint);

setAttribute(Qt::WA_TranslucentBackground, true);

##2:void paintEvent()函数重写

protected:

void paintEvent(QPaintEvent *event)

{

QPainter painter(this);

painter.fillRect(this->rect(), QColor(0, 0, 255, 80)); //QColor最后一个参数80代表背景的透明度,0为完全透明

}

3:QPushButton在按下后不显示边框

ui->pushButton->setStyleSheet("border-style:hidden;");

qt禁止拖动_[Qt]QMdiArea,无框架窗口的拖动相关推荐

  1. 【C++·Qt】Qt透明无边框窗口以及拖动

    窗口透明  1.窗口整体透明(包含其子空控件) //窗口以及子控件都透明 //setAttribute(Qt::WA_WState_WindowOpacitySet); //网上说直接设置不起作用,需 ...

  2. 最简单的方式实现QML无边框窗口边缘拖动调整大小

    前言 使用Qt在开发桌面程序时,通常会去除默认的程序边框,从而实现自定义的标题栏.然而当设置窗口属性为Qt.FramelessWindowHint后,窗口的拖动,以及在边缘拖动缩放的功能就没有了,在以 ...

  3. qt messagebox退出程序_[Qt] Mac平台安装最新版qt的方法(源码编译) - 刘傲天

    安装方式 安装方式有在线(online)和离线(offline)两个选项,因为在线安装可能要连接国外的服务器非常慢,还会经常失败,所以我们选择离线安装(offline). 选择安装方式 打开https ...

  4. QT实现可移动和改变尺寸的无边框窗口

    2019独角兽企业重金招聘Python工程师标准>>> 实现QT无边框窗口的拖动,尺寸改变.需要的时候从该类继承,派生类需要定义为QWidget. 头文件: #ifndef SIZE ...

  5. 【Qt编程】基于Qt的词典开发系列一--词典框架设计及成品展示

    去年暑假的时候,作为学习Qt的实战,我写了一个名为<我爱查词典>的词典软件.后来由于导师项目及上课等原因,时间不足,所以该软件的部分功能欠缺,性能有待改善.这学期重新拿出来看时,又有很多东 ...

  6. Qt Quick无边框窗口

    开发环境:Qt Creator 5.6 内容:  使用 Qt  Quick创建无边框窗口 Qt Quick是一个无比强大.无比方便快捷的跨平台的开发框架,并且能通过Qt强大的元对象系统实现qml与c+ ...

  7. 【QT】自定义无边框窗口分享

    [QT/天下wu双]自定义无边框窗口分享 https://www.bilibili.com/video/BV1HA411Y7d4 源码链接:https://github.com/Bili-TianX/ ...

  8. 【Qt编程】基于Qt的词典开发系列六--界面美化设计

    本文讲一讲界面设计,作品要面向用户,界面设计的好坏直接影响到用户的体验.现在的窗口设计基本都是扁平化的,你可以从window XP与window 8的窗口可以明显感觉出来.当然除了窗口本身的效果,窗口 ...

  9. 【Qt编程】基于Qt的词典开发系列十二调用讲述人

    我们知道,win7系统自带有讲述人,即可以机器读出当前内容,具体可以将电脑锁定,然后点击左下角的按钮即可.之前在用Matlab写扫雷游戏的时候,也曾经调用过讲述人来进行游戏的语音提示.具体的Matla ...

最新文章

  1. Android开发:自定义GridView/ListView数据源
  2. 最近面试,笔试题中的一道sql题
  3. CloudCare容器技术白皮书
  4. 重庆大学校友会计算机,资环学院联谊会隆重举行
  5. 如何通过js调用接口
  6. windows x64 软件约定
  7. ncurses鼠标事件:mousemask(),ALL_MOUSE_EVENTS,KEY_MOUSE,getmouse(),mouse_grafo(),wmouse_trafo()
  8. LeetCode 496. 下一个更大元素 I
  9. java密钥长度受限制问题解决
  10. java的HashCode方法(转载)
  11. lenovo微型计算机如何拆t410,拆解 ThinkPad T410
  12. 工业机器人远程监控系统方案
  13. 微信小程序从入门到放弃(五)
  14. 基于蓝墨云班课的翻转课堂实践
  15. 计算机控制实验报告组态软件学习,中北大学组态软件实验报告
  16. 什么是内容电商,内容电商平台有哪些?
  17. 897-了解微服务网关
  18. net::ERR_ABORTED 404 (Not Found)错误
  19. php7.1以上 mcrypt_generic_open is deprecated 报错处理
  20. 分配工作时需要考虑的问题

热门文章

  1. java 之 servlet简介
  2. 一天一个设计模式:工厂方法模式
  3. OV摄像头SCCB通信协议
  4. mysql,oracle表数据相互导入
  5. flash builder 4.6在debug调试时需要系统安装flashplayer debug版本
  6. CanvasRenderingContext2D.imageSmoothingEnabled
  7. Android TelephonyManager类
  8. 【原创】定制ROM时自定义默认主题
  9. [转载] Python中int类型和string类型的相互转换
  10. [转载] 包含对象的json格式_如何把JSON数据格式转换为Python的类对象?