linux qt4的qcombobox下拉框,在窗口管理器,开启复合效果后,会跑偏问题

1. 下载qt4的源码

这里使用的是qt4.8.6网址,http://download.qt.io/archive/qt/4.8/4.8.6/,下载qt-everywhere-opensource-src-4.8.6.tar.gz。

2. 编译qt

a.解压

将qt-everywhere-opensource-src-4.8.6.tar.gz放入/opt目录下

tar -zxvf qt-everywhere-opensource-src-4.8.6.tar.gz

b.生成Makefile

cd qt-everywhere-opensource-src-4.8.6
./configure
make

3. 修改代码

修改文件qt-everywhere-opensource-src-4.8.6/src/gui/widgets/qcombobox.cpp

void QComboBoxPrivate::updateViewContainerPaletteAndOpacity()
{
    if (!container)
        return;
    Q_Q(QComboBox);
    QStyleOptionComboBox opt;
    q->initStyleOption(&opt);
#ifndef QT_NO_MENU
    if (q->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, q)) {
        QMenu menu;
        menu.ensurePolished();
        container->setPalette(menu.palette());
        container->setWindowOpacity(menu.windowOpacity());
    } else
#endif
    {
        container->setPalette(q->palette());
//        container->setWindowOpacity(1.0); //屏蔽这行
    }
    if (lineEdit)
        lineEdit->setPalette(q->palette());
}

4.重新编译

make

5.替换文件

编译后得到新的库文件,在qt-everywhere-opensource-src-4.8.6/lib中,找到libQtGui.so相关文件,并替换原有的。

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页