• 10883阅读
  • 9回复

[提问]调用this->setWindowFlags(Qt::FramelessWindowHint )后界面卡死 [复制链接]

上一主题 下一主题
离线extre_lin
 

只看楼主 倒序阅读 楼主  发表于: 2015-06-12
在QMainWindow的够着函数中调用this->setWindowFlags(Qt::FramelessWindowHint )后界面卡死,卡死的控件有tab Widget
lineEdit、以及tabwidget中所有的控件!


右上的关闭按钮仍然有效!
构造函数代码

MyQtSTL::MyQtSTL(QWidget *parent)
    : QMainWindow(parent),
     ui(new Ui::MyQtSTLClass)
{
    this->setWindowFlags(Qt::FramelessWindowHint );
    ui->setupUi(this);
    OpenGlView=new WGLWidget;
    ui->scrollArea->setWidget(OpenGlView);
    //this->setMouseTracking(true);
    ui->RadioAdapSlice->setChecked(true);
    m_SelectSlice=0;
    m_VecDir=VECTOR3D(0,0,1);
    OpenGlView->m_VecDir=m_VecDir;
    ui->FillcomboBox->addItem(QString::fromLocal8Bit("线性填充"));
    ui->FillcomboBox->addItem(QString::fromLocal8Bit("偏置填充"));
    ui->FillcomboBox->addItem(QString::fromLocal8Bit("混合填充"));
    ui->FillcomboBox->addItem(QString::fromLocal8Bit("螺旋填充"));
    ui->FillcomboBox->addItem(QString::fromLocal8Bit("一笔画填充"));
    ui->lineEditDistan->setValidator(new QDoubleValidator(0,10,3));
    ui->lineEditDistan->setText("2");
    //this->setAttribute(Qt::WA_TranslucentBackground, true);
}求助!!
离线extre_lin

只看该作者 1楼 发表于: 2015-06-12
目前找到的原因可能是和 ui->scrollArea->setWidget(OpenGlView)这条函数有关, WGLWidget类是派生QGLwiidget的一个类,不明白其中道理!
离线stlcours

只看该作者 2楼 发表于: 2015-06-12
我也花了很多时间研究这个问题。结论很清楚,是QT的bug。官方从5.11开始纠正了这个bug,但是却拒绝在qt4的维护版本里纠正这个bug,让人很郁闷。

不过QT源代码深层的原因我没有研究,楼主要是有能力不妨继续研究一下,我也希望能在QT4里解决这个问题!
离线extre_lin

只看该作者 3楼 发表于: 2015-06-12
回 stlcours 的帖子
stlcours:我也花了很多时间研究这个问题。结论很清楚,是QT的bug。官方从5.11开始纠正了这个bug,但是却拒绝在qt4的维护版本里纠正这个bug,让人很郁闷。
不过QT源代码深层的原因我没有研究,楼主要是有能力不妨继续研究一下,我也希望能在QT4里解决这个问题! (2015-06-12 16:55) 

可是我用的是5.3.2还是出现这个问题
离线stlcours

只看该作者 4楼 发表于: 2015-06-12
你的代码不全,我也没法帮你做测试。不过巧的是,我现在天天也在用5.32做开发,没有任何问题,到最终发布版本也会用这个版本。其实当初从4.86(我以为这是一个很稳定的维护版本)升级到QT5也就是因为这一个原因。你这个问题还是想办法自己试试。

PS:我之前碰到的症状,和你的描述一模一样,而且也是无边窗口。后来装了10多个QT大小版本,挨个反复测试,确实发现5.10都有这个症状,到5.11就没有了,然后到官方提交了bug,他们也接受这是一个bug,但就是不肯在QT4里纠正了。
离线stlcours

只看该作者 5楼 发表于: 2015-06-12
我倒是觉得你可以使用5.10和5.11分别测试一下,如果都有这个问题,那我们说的可能不是同一个问题,尽管外表相似。
离线lmaxmax

只看该作者 6楼 发表于: 2015-06-13
this->setWindowFlags(Qt::FramelessWindowHint );

把这句放到构造函数最后面去试试
离线extre_lin

只看该作者 7楼 发表于: 2015-06-15
回 stlcours 的帖子
stlcours:我倒是觉得你可以使用5.10和5.11分别测试一下,如果都有这个问题,那我们说的可能不是同一个问题,尽管外表相似。 (2015-06-12 22:01) 

嗯,我试试,谢谢啦。(PS:打了那么多字好辛苦的)
离线stlcours

只看该作者 8楼 发表于: 2015-06-15
回 extre_lin 的帖子
extre_lin:嗯,我试试,谢谢啦。(PS:打了那么多字好辛苦的) (2015-06-15 09:40)

不用谢。你要是找到了解决办法,也请上来说一声。我对这个问题始终耿耿于怀,但是没有精力追踪QT源代码,所以持续关注。
离线a52505

只看该作者 9楼 发表于: 2018-02-05
我也遇到了,QT5.4.6,请问楼主解决了么?
快速回复
限100 字节
 
上一个 下一个