gpt4 book ai didi

linux - Qt 小部件大小错误 + 小部件更新问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:25:59 25 4
gpt4 key购买 nike

这是我使用 QT/linux 时遇到的问题的精简版本。程序运行,但显示的小部件的大小错误(内容、框架+标签不适合)。

我知道窗口的大小应该根据其内容(子窗口)来计算。为什么这里没有正确发生?

所以第一个问题当然是为什么会发生这种情况。

真实的程序实际上在运行时更新小部件的内容。我尝试通过插入 main_window->show() (注释 //SHOW1)来模拟该行为。如果进行第一个 show() 调用,则第二个 show() 不会显示小部件的新内容。我尝试过更新但没有成功...

 #include <QApplication>
#include <QtCore>
#include <QMainWindow>
#include <QTabWidget>
#include <QWidget>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QLabel>

#include <stdlib.h>


int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow* main_window = new(QMainWindow);
main_window->setObjectName("main_window");
main_window->resize(800, 600);
main_window->setWindowTitle("Hello");

QTabWidget* node_tab_widget = new QTabWidget(main_window);
// node_tab_widget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
// node_tab_widget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
node_tab_widget->setObjectName(QString::fromUtf8("tab_widget"));
node_tab_widget->resize(500, 400);

QWidget* w= new QWidget(node_tab_widget);
node_tab_widget->addTab(w, "TAB");

//main_window->show(); //SHOW1
QGroupBox* group_widget = new QGroupBox("GROUPNAME", w);
QVBoxLayout* group_layout = new QVBoxLayout;
group_widget->setLayout(group_layout);
group_layout->addWidget((QLabel*)new QLabel(">>>>>>>>>>>>>>>>>>>>>>>>>here1"));
group_layout->addWidget((QLabel*)new QLabel("here2"));
// group_widget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);


main_window->update();
main_window->show();
return app.exec();
}

最佳答案

我不太明白你期望的结果是什么,可能类似于你从这段代码中得到的结果:

#include <QApplication>
#include <QtCore>
#include <QMainWindow>
#include <QTabWidget>
#include <QWidget>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QLabel>
#include <stdlib.h>

int main(int argc, char *argv[]) {

QApplication app(argc, argv);
QMainWindow* main_window = new(QMainWindow);
main_window->setObjectName("main_window");
main_window->resize(800, 600);
main_window->setWindowTitle("Hello");

QTabWidget* node_tab_widget = new QTabWidget();
node_tab_widget->setObjectName(QString::fromUtf8("tab_widget"));
node_tab_widget->resize(500, 400);

QWidget* w= new QWidget();
node_tab_widget->addTab(w, "TAB");

QGroupBox* group_widget = new QGroupBox("GROUPNAME", w);
QVBoxLayout* group_layout = new QVBoxLayout;
group_widget->setLayout(group_layout);
group_layout->addWidget((QLabel*)new QLabel(">>>>>>>>>>>>>>>>>>>>>>>>>here1"));
group_layout->addWidget((QLabel*)new QLabel("here2"));

QVBoxLayout* gl = new QVBoxLayout;
gl->addWidget(group_widget);

main_window->setCentralWidget(node_tab_widget);
main_window->show();
return app.exec();
}

将 QTabWidget node_tab_widget 添加为中央小部件,并带有选项卡 TAB

该选项卡包含 QGroupBox GROUPNAME 和两个标签(垂直对齐)

关于linux - Qt 小部件大小错误 + 小部件更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932297/

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