码迷,mamicode.com
首页 > 其他好文 > 详细

4.7版本的qt中qml的背景透明设置和最小化

时间:2014-10-28 15:49:33      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:qml 透明背景 最小化

qml中的背景透明设置:


view.setStyleSheet("background:transparent;");

view.setAttribute(Qt::WA_TranslucentBackground);


qml中设置背景透明后showMinimized()(最小化)不好用解决方案是:

对qml的焦点事件重载

头文件:

#ifndef QML_WIDGET_SET_H
#define QML_WIDGET_SET_H

#include <QDeclarativeView>

class qml_widget : public QDeclarativeView
{
    Q_OBJECT
public:
    explicit qml_widget(QDeclarativeView *parent = 0);
    
signals:
    
public slots:
    virtual void focusInEvent(QFocusEvent *event);
    
};

#endif // QML_WIDGET_SET_H

cpp文件:

#include "qml_widget.h"

qml_widget::qml_widget(QDeclarativeView *parent) :
    QDeclarativeView(parent)
{

}

void qml_widget::focusInEvent(QFocusEvent *event)
{
    repaint();
}

main函数:

#include <QtGui/QApplication>
#include <QResource>
#include <QDeclarativeView>
#include <QDeclarativeContext>
#include <QTextCodec>
#include <QDebug>
#include "qml_widget.h"
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);


   QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
   QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));
   QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));

   qml_widget playerview;

   playerview.setSource(QUrl("qrc:player.qml"));

   playerview.setWindowFlags(Qt::FramelessWindowHint);

   playerview.setStyleSheet("background:transparent;");
   playerview.setAttribute(Qt::WA_TranslucentBackground);


   QObject *viewobj = dynamic_cast<QObject*>((QObject*)playerview.rootObject());

   QObject::connect(viewobj,SIGNAL(min()),&playerview,SLOT(showMinimized()));

   playerview.show();

   return a.exec();
}

注:信号min()是qml页面中的发送的

4.7版本的qt中qml的背景透明设置和最小化

标签:qml 透明背景 最小化

原文地址:http://sysq2012cto.blog.51cto.com/8202674/1568705

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!