linux - Qt应用,linux-arm平台切换页面时出现闪烁

标签 linux qt embedded-linux

Qt版本:4.8.6

应用程序通过交叉编译器部署在arm-linux 上。在我的电脑上,一切正常。此问题出现在 arm-linux 平台上。如果即将到来的页面包含 QWidget 对象,则会出现此问题。

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{ 
    ui->setupUi(this); 
    QDesktopWidget deskWidget; 
    this->resize(deskWidget.availableGeometry().size()); 
    //main page 
    this->setPalette(QPalette(QColor(Qt::black)));
    QPushButton* button = new QPushButton("to next",this);
    connect(button,SIGNAL(clicked()),this,SLOT(onButtonClick())); 
}

void Widget::onButtonClick() 
{ 
    QDialog dialog(this); 
    dialog.resize(size());
    QWidget* topW = new QWidget(&dialog);
    QPushButton* button1 = new QPushButton("back",&dialog);
    connect(button1,SIGNAL(clicked()),&dialog,SLOT(accept()));
    QVBoxLayout* lw = new QVBoxLayout; 
    lw->addWidget(topW); 
    lw->addWidget(button1);
    dialog.setLayout(lw); 
    dialog.exec(); 
}

图1,打开dialog,有明显的闪烁,但是如果我把dialog中的widget去掉,把dialog的背景色设置为黑色,就没有闪烁了,比如回到主窗口(图2)

点击按钮显示对话框

当点击对话框中的按钮回到主窗口时

最佳答案

我不知道为什么会这样,但我通过添加一行代码解决了它 void Widget::onButtonClick() { QDialog 对话框(this); dialog.setAttribute(Qt::WA_NoSystemBackground); }

关于linux - Qt应用,linux-arm平台切换页面时出现闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45562463/

相关文章:

linux - 设置了权限位,但仍然拒绝访问

c++ - CMAKE如何告诉Makefile链接库?

c++ - 对 `vtable for MyCalss' 的 undefined reference

c++ - 在 qt 中使用 new[] 时发生奇怪的崩溃

linux - 如何调用 My Checksum 而不是 Kernel Checksum(Kernel Checksum 汇编代码)

linux - SIGSEGV 崩溃但无法收集回溯

java - LD_PRELOAD 套接字函数 java

arrays - 理解代码({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1 })

qt - 关闭 Qt creator 5 : "Unexpected CDB error" 后的错误消息

Linux C进程等待文件复制完成(shell命令)