QT的一些注意点与方法积累
2016-07-27 11:08
549 查看
1、 设置右击屏蔽事件的方法
<span style="font-size:18px;">//设置单个控件右击屏蔽 DuiTextEdit* textEdit = findChild<DuiTextEdit*>("appealExplanation"); if(textEdit) { textEdit->setDefaultContextMenuEnable(false); } //设置全部右击屏蔽 this->setContextMenuPolicy(Qt::NoContextMenu);//设置linedit右键不响应</span>
2、 不同类之间的国际化文件<context>的类不一样
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.0"> <!--xml布局文件context直接使用QObject--> <context> <name>QObject</name> <message> <source>Animation</source> <translation>动画</translation> </message> </context> <!--在类DemoFrame类中context使用DemoFrame--> <context> <name>DemoFrame</name> <message> <source>Document</source> <translation>文件</translation> </message> </context> </TS>
3、 ImageWidget图片的大小等于设定的大小时,当要设定边框时,需要将设定的大小增大2个像素才能显示边框
4、 窗口设定的属性
//设置透明背景和无边框 setStyleSheet("background: transparent;border:0px"); //隐藏滚动条 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //设置透明2-窗体标题栏不透明,背景透明 setAttribute( Qt::WA_TranslucentBackground, true ); //去掉标题栏 setWindowFlags( Qt::FramelessWindowHint|Qt::Tool );
5、 设置ImageWidget的窗口可见,大于窗口的不可见
//setFlag( QGraphicsItem::ItemClipsToShape ); //例如设置一个数字长条0-9的数字图片,只显示其中一个数字的部分部分可见 setFlag( QGraphicsItem::ItemClipsChildrenToShape );
6、 设置动画的一些属性
//QPropertyAnimation构造函数中第二个参数设置的固定值如“windowOpacity” ,"pos","geometry" //m_animation = new QPropertyAnimation( m_valueImageWidget,"pos" ); m_animation.setTargetObject( m_valueImageWidget ); m_animation.setPropertyName( "pos" ); //QEasingCurve::InOutQuart加速至一半,然后再减速。 m_animation.setEasingCurve(QEasingCurve::InOutQuart); //该函数控制了动画的重复次数。默认是1,如果设置成0则表示无限循环。 //m_animation.setLoopCount(1);
7、在一个frame里边嵌入一个widget,可以覆盖虚函数void DemoWidget::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget /* = 0 */ )
void DemoWidget::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget /* = 0 */ ) { painter->save(); painter->fillRect( rect(), QColor( 0,0,0,100 ) ); painter->setPen( Qt::red ); painter->drawText( QRect( 0, 0, width(), height() ), "" ); painter->drawPixmap(1,-13,269,100,pixmap);//第一,二个参数是左上角坐标,后边2个参数是长和宽 painter->restore(); }
8、 最大化窗口后背景图不走样的方法是覆盖虚函数 virtual void drawBackground( QPainter * painter, const QRectF & rect );
//重写函数,使得背景图片最大化位置不会发生变化跟着界面最大化 virtual void drawBackground( QPainter * painter, const QRectF & rect );
void DemoFrame::drawBackground(QPainter * painter, const QRectF & rect) { Q_UNUSED(rect); painter->save(); qreal winWidth = this->rect().width(); qreal winHeight = this->rect().height(); //qreal a=pixmap_test.rect().width(); qreal left = m_pixmapBbackground.rect().width() / 2 - winWidth/ 2; qreal top = 0.0; //将QRectF(left, top, winWidth, winHeight)大小的pixmap_test图片,绘制到this->rect()中去。 //这里在没有最大化前left,top这个位置截取了一部分到窗口,最大化后也跟着变化 painter->drawPixmap(this->rect(), m_pixmapBbackground, QRectF(left, top, winWidth, winHeight)); painter->restore(); }布局文件中可以使用<DuiSpacerItem/>来占据空间,这个控件可以自动占据空间变大变小。
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- QModelIndex/Role/Model介紹<二>
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- Qt Model/View/Delegate浅谈 - roleNames()
- QT历程(一):与CryptoJs对应的AES加密
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO
- ubuntu下opencv和qt的安装配置
- linux下opengl的安装(with qt)