您的位置:首页 > 编程语言 > Qt开发

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