gpt4 book ai didi

QTabWidget inside a QSplitter switching very slow

转载 作者:行者123 更新时间:2023-12-02 04:59:37 78 4
gpt4 key购买 nike

我是 Qt 新手,想为程序实现一些对话框。

对话框的 GUI 很简单:左边是一棵树,右边是一些选项卡(选项卡的数量可能会发生变化),每个选项卡中都有一些用于输入的小部件。

但是当我用Qt5.0.2实现这个对话框的时候,我发现切换标签的时候很慢。 (切换一个tab一般需要0.1s以上,有时随机点很多tab会停好几秒)

我想知道我是否以错误的方式使用 Qt,或者我是否可以做些什么来提高性能

这是我的场景示例:

    TestQT::TestQT(QWidget *parent)
: QMainWindow(parent)
{

QSplitter* pSplitter = new QSplitter();
QTreeWidget* pTree = new QTreeWidget();

pSplitter->addWidget(pTree);

QTabWidget* pTabs = new QTabWidget();

for (int i = 0; i < 10; i++)
{
QWidget* pPage = new QWidget();
QVBoxLayout* pLayout = new QVBoxLayout();
for (int j = 0; j < 20; j++)
{
QHBoxLayout* pLineLayout = new QHBoxLayout();
pLineLayout->addWidget(new QCheckBox());
pLineLayout->addWidget(new QLineEdit());
pLayout->addLayout(pLineLayout);
}
pPage->setLayout(pLayout);

pTabs->addTab(pPage, tr("Page%1").arg(i));
}

pSplitter->addWidget(pTabs);

this->setCentralWidget(pSplitter);
}

最佳答案

我同意库巴的观点。大多数 GUI 故障是在另一个操作阻塞其运行的线程时发生的,因此在这些情况下,您的解决方案是将 GUI 或该操作移动到另一个线程。

由于我在这里只看到 GUI 的代码,所以让我们先尝试将 GUI 移动到另一个线程。使用 header QThread,将这些代码添加到您的函数中,看看是否有帮助:

QThread * t1 = new QThread();
this->moveToThread(t1);
t1->start();

关于QTabWidget inside a QSplitter switching very slow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17940242/

78 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com