QT开发中文网

qt布局中一个隐藏了,另一个自适应改变了大下,但他内部的控件位置没有变,怎么用qss设置

在QT中,使用QSS(Qt Style Sheet)可以为控件设置样式,包括控件的位置、大小、背景等。如果您希望在一个控件隐藏了、另一个自适应改变大小但内部控件位置没有改变的情况下使用QSS设置样式,可以按照以下步骤操作:

  1. 在Qt Designer或代码中创建布局。
  2. 将要隐藏的控件从布局中删除,并保存其原始大小和位置信息。
  3. 将其他控件重新排列,并根据需要添加弹簧和间隔以保持对齐。
  4. 当需要再次显示被隐藏的控件时,将其重新添加到布局中,并使用保存的原始大小和位置信息进行调整。
  5. 使用QSS为每个控件设置样式。

以下是示例代码,演示如何处理一个隐藏了、另一个自适应改变大小但内部控件位置没有改变的情况,并且如何使用QSS为每个控件设置样式:

#include <QtWidgets>

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

    QWidget window;
    QVBoxLayout* layout = new QVBoxLayout(&window);
    
    QLabel label1("Label 1", &window);
    QLabel label2("Label 2", &window);
    QPushButton button("Button", &window);

    // 设置标签1、标签2和按钮的样式
    label1.setObjectName("label1");
    label2.setObjectName("label2");
    button.setStyleSheet("font-size:20px;");

    // 将标签1和按钮添加到布局中
    layout->addWidget(&label1);
    layout->addWidget(&button);

    // 保存标签2的原始大小和位置信息,然后从布局中删除它
    QSize size = label2.size();
    QPoint pos = label2.pos();
    layout->removeWidget(&label2);

    // 调整标签1、按钮和标签2(此时隐藏了)的位置关系
    QSpacerItem* spacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
    layout->addSpacerItem(spacer);
    layout->addWidget(&label2);

    // 当需要再次显示标签2时,重新添加到布局中,并使用原始大小和位置信息进行调整
    label2.show();

	// 使用QSS为每个控件设置样式
	QFile file(":/style.qss");
	file.open(QFile::ReadOnly | QFile::Text);
	QString styleSheet = QLatin1String(file.readAll());
	window.setStyleSheet(styleSheet);
    
	window.setGeometry(300, 300, 400, 400);
	window.setWindowTitle("Example");
	window.show();

	return app.exec();
}

在上述示例中,我们首先将要隐藏的控件(label2)从布局中删除,并保存其原始大小和位置信息。然后,我们使用弹簧和间隔来调整其他控件(label1和button)的位置,以保持对齐。

当需要再次显示被隐藏的控件时,我们将其重新添加到布局中,并使用保存的原始大小和位置信息进行调整。

最后,我们使用QSS为每个控件设置样式。在这个例子中,我们从文件中读取样式表,并将其应用于窗口。您可以根据需要自定义每个控件的样式。

通过这种方式,我们可以解决隐藏控件和自适应布局的问题,并使用QSS为每个控件设置样式。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=2807

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?