zoukankan      html  css  js  c++  java
  • Qt工程相关问题杂集

    其实本博文的内容并非本人原创,而是本人对最近遇到的一些典型问题解决方案的综述,绝大部分是综合网上的相关内容而得。

    1 解决Unable to locate theme engine in module_path: "pixmap"

    Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap"

    纳闷老是弹这东东出来,虽然。。。貌似不影响什么,可是看着不爽

    好吧,Google到launchpad,有人提交bug,在讨论里有人说

    装下那个engines就好了,就那么一行。。。

    sudo apt-get install gtk2-engines-pixbuf 

    (在ubuntu 11.10下没发现有gtk3的。。不过装了这一样再没提示了)

    qt主窗口隐藏后,关闭子窗口,主程序退出

    问:我写了一个简单的后台程序,发现一个问题,在我隐藏主窗口后如果有子窗口弹出如QMessageBox::information,若关闭该弹出的子窗口,就会导致主窗口也被关闭。

    这样我的后台程序就无法弹出任何对话框了,否则主程序会在子窗口关闭后退出,不知道大家有没有遇到一样的问题?怀疑是BUG或者设计缺陷

    答:1. 不是bug 2. 不是缺陷 3. 多看Manual: QApplication 之 quitOnLastWindowClosed

    当最后一个窗体被关闭,应用程序就结束了。QApplication' 的quitOnLastWindowClosed 属性设为 false,程序会一直运行,直到我们调用QApplication::quit()

    3 Can’t set WA_TranslucentBackground to a QWidget

    下看如下一段代码:

    #include <QtWidgets/QApplication>
    #include <QtDeclarative/qdeclarative.h>
    #include <QtDeclarative/qdeclarativeview.h>
    #include <QLabel>
    
    int main(int argc, char *argv[])
    {
        QScopedPointer<QApplication> app(new QApplication(argc, argv));
        QWidget w;
        
        w.resize(500, 400);
        QPalette palette = w.palette();
        palette.setColor(QPalette::Base, Qt::transparent); 
        w.setPalette(palette);
        w.setAttribute(Qt::WA_TranslucentBackground);  //this line will make the program crash
        w.setWindowFlags(Qt::FramelessWindowHint);
        QLabel *label = new QLabel("Some label", &w);
        label->setObjectName("label");
        w.show();
        
        return app->exec();
    }

    该段代码是典型的使窗口透明的方法,在Qt4下它确实能正常工作,但是在Qt5下它的表现很不正常,我在win7 64位下的效果是:窗口不能显示,只在任务栏有相应程序的图标,

    但是单击该图标主程序不能显示,还有一些人说会导致崩溃,这个我倒没发现,中文的基本上没有搜索到解决方案,最后在http://qt-project.org/forums/viewthread/24344/

    上找到解决方案,要点如下:

    Form::Form(QWidget *parent) :
        QWidget(parent, Qt::FramelessWindowHint)
    {
        setAttribute(Qt::WA_TranslucentBackground);
        ui.setupUi(this);
    }

    新建一个类继承QWidget,在调用setupUi(this)之前就设置Qt::WA_TranslucentBackground属性,这样就可以实现透明窗口效果!

  • 相关阅读:
    圆角矩形“RoundRectShape”使用详解
    SVGImageView
    actionbarsherlock示例
    [百度]服务号和订阅号的区别
    [学习]ulimit
    [Cnbeta]BAT财报对比
    【百度】大型网站的HTTPS实践(三)——HTTPS对性能的影响
    【百度】大型网站的HTTPS实践(二)——HTTPS加密算法介绍
    【百度】大型网站的HTTPS实践(一)——HTTPS协议和原理
    [华商韬略] 拉里·埃里森(Larry Elison) 的传奇人生
  • 原文地址:https://www.cnblogs.com/zhaoweiwei/p/3010947.html
Copyright © 2011-2022 走看看