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属性,这样就可以实现透明窗口效果!

  • 相关阅读:
    [置顶] Gridview中textbox列,按回车键或者上下键自动下移
    Java WebService入门实例
    hdu2553N皇后问题
    在SQL 脚本中进行 文件的读写
    按引用传递参数
    sencha 2.2详细说明
    [置顶] java高级工程师hibernate的知识重点
    [置顶] NYOJ117 求逆序数
    合作开发用到的几个 设计模式
    HDU1718:Rank
  • 原文地址:https://www.cnblogs.com/zhaoweiwei/p/3010947.html
Copyright © 2011-2022 走看看