qt禁止拖动_[Qt]QMdiArea,无框架窗口的拖动
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,无框架窗口的拖动相关推荐
- 【C++·Qt】Qt透明无边框窗口以及拖动
窗口透明 1.窗口整体透明(包含其子空控件) //窗口以及子控件都透明 //setAttribute(Qt::WA_WState_WindowOpacitySet); //网上说直接设置不起作用,需 ...
- 最简单的方式实现QML无边框窗口边缘拖动调整大小
前言 使用Qt在开发桌面程序时,通常会去除默认的程序边框,从而实现自定义的标题栏.然而当设置窗口属性为Qt.FramelessWindowHint后,窗口的拖动,以及在边缘拖动缩放的功能就没有了,在以 ...
- qt messagebox退出程序_[Qt] Mac平台安装最新版qt的方法(源码编译) - 刘傲天
安装方式 安装方式有在线(online)和离线(offline)两个选项,因为在线安装可能要连接国外的服务器非常慢,还会经常失败,所以我们选择离线安装(offline). 选择安装方式 打开https ...
- QT实现可移动和改变尺寸的无边框窗口
2019独角兽企业重金招聘Python工程师标准>>> 实现QT无边框窗口的拖动,尺寸改变.需要的时候从该类继承,派生类需要定义为QWidget. 头文件: #ifndef SIZE ...
- 【Qt编程】基于Qt的词典开发系列一--词典框架设计及成品展示
去年暑假的时候,作为学习Qt的实战,我写了一个名为<我爱查词典>的词典软件.后来由于导师项目及上课等原因,时间不足,所以该软件的部分功能欠缺,性能有待改善.这学期重新拿出来看时,又有很多东 ...
- Qt Quick无边框窗口
开发环境:Qt Creator 5.6 内容: 使用 Qt Quick创建无边框窗口 Qt Quick是一个无比强大.无比方便快捷的跨平台的开发框架,并且能通过Qt强大的元对象系统实现qml与c+ ...
- 【QT】自定义无边框窗口分享
[QT/天下wu双]自定义无边框窗口分享 https://www.bilibili.com/video/BV1HA411Y7d4 源码链接:https://github.com/Bili-TianX/ ...
- 【Qt编程】基于Qt的词典开发系列六--界面美化设计
本文讲一讲界面设计,作品要面向用户,界面设计的好坏直接影响到用户的体验.现在的窗口设计基本都是扁平化的,你可以从window XP与window 8的窗口可以明显感觉出来.当然除了窗口本身的效果,窗口 ...
- 【Qt编程】基于Qt的词典开发系列十二调用讲述人
我们知道,win7系统自带有讲述人,即可以机器读出当前内容,具体可以将电脑锁定,然后点击左下角的按钮即可.之前在用Matlab写扫雷游戏的时候,也曾经调用过讲述人来进行游戏的语音提示.具体的Matla ...
最新文章
- Android开发:自定义GridView/ListView数据源
- 最近面试,笔试题中的一道sql题
- CloudCare容器技术白皮书
- 重庆大学校友会计算机,资环学院联谊会隆重举行
- 如何通过js调用接口
- windows x64 软件约定
- ncurses鼠标事件:mousemask(),ALL_MOUSE_EVENTS,KEY_MOUSE,getmouse(),mouse_grafo(),wmouse_trafo()
- LeetCode 496. 下一个更大元素 I
- java密钥长度受限制问题解决
- java的HashCode方法(转载)
- lenovo微型计算机如何拆t410,拆解 ThinkPad T410
- 工业机器人远程监控系统方案
- 微信小程序从入门到放弃(五)
- 基于蓝墨云班课的翻转课堂实践
- 计算机控制实验报告组态软件学习,中北大学组态软件实验报告
- 什么是内容电商,内容电商平台有哪些?
- 897-了解微服务网关
- net::ERR_ABORTED 404 (Not Found)错误
- php7.1以上 mcrypt_generic_open is deprecated 报错处理
- 分配工作时需要考虑的问题
热门文章
- java 之 servlet简介
- 一天一个设计模式:工厂方法模式
- OV摄像头SCCB通信协议
- mysql,oracle表数据相互导入
- flash builder 4.6在debug调试时需要系统安装flashplayer debug版本
- CanvasRenderingContext2D.imageSmoothingEnabled
- Android TelephonyManager类
- 【原创】定制ROM时自定义默认主题
- [转载] Python中int类型和string类型的相互转换
- [转载] 包含对象的json格式_如何把JSON数据格式转换为Python的类对象?