qt先添加d簧后添加widget之后d簧不会变吗

qt先添加d簧后添加widget之后d簧不会变吗,第1张

<pre t="code" l="cpp">// ----- 答案肯定是可以的 -----//

// 先创建原先的界面,用布局进行管理

QWidget *widgetMain = new QWidget()

// 加入一个输入框和按钮

QLineEdit *lineEdit = new QLineEdit(widgetMain)

QPushButton *btn = new QPushButton(widgetMain)

// 用水平布局将这2个控件框起,并且置于界面顶部

QHBoxLayout *horLayout = new QHBoxLayout()

horLayout->addWidget(lineEdit, 4)

horLayout->addWidget(btn, 1) // 设置布局比例为4:1

// 然后添加一个全局布局控件

QVBoxLayout *verLayout = new QVBoxLayout(widgetMain)

verLayout->addLayout(horLayout)// 加入刚才的输入组,底部添加d簧

verLayout->addStretch()

// --------- 基本界面创建完成 -------------- //

// 关联处理动态创建

int nCnt = lineEdit->text().toInt()// 输入的个数

for (int i = 0i <nCnti++) {

QLabel *label = new QLabel(widgetMain)

// 插入之前的布局

label->setText(QString("动态创建label %1).arg(i + 1))

verLayout->insertWidget(1 + i, label)

}

// 大功告成

// 备注,以上代码纯手工,写法或其他错误请自行修改,仅作参考

首先我们在界面中添加一个QLabel控件。

在控件上边下边分别添加一个竖直的d簧,选中这三个控件,然后点击竖直布局,如下图所示。布局结果如右图。

然后在上次布局的两侧添加水平的d簧,选中两个d簧和上次的布局,点击水平布局。布局效果如图

最后选中最外层的窗口,然后点击水平或竖直布局,进行整体布局

布局效果如下图,现在可以运行一下,然后拖动界面改变大小来试一下效果了。

打开APP

Lsa_BigDevil

关注

Qt中继承QWidget之后,样式表不起作用解决方法(5) 原创

2022-06-14 15:31:31

1点赞

Lsa_BigDevil

码龄10年

关注

Qt中继承QWidget之后,样式表不起作用解决方法一共有三个分别为:

方法一:设置属性 this->setAttribute(Qt::WA_StyledBackground, true)

方法二:改成继承QFrame,因为QFrame自带paintEvent函数已做了实现,在使用样式表时会进

行解析和绘制。

方法三:重新实现QWidget的paintEvent函数时,使用QStylePainter绘制。

void Widget::paintEvent(QPaintEvent *)

{

QStyleOption option

option.initFrom(this)

QPainter painter(this)

style()->drawPrimitive(QStyle::PE_Widget, &option, &painter, this)

}

1,有时候在界面上加了d簧,需要动态改变d簧对应的拉伸策略,对应方法为changeSize,很多人会选择使用set开头去找,找不到的。

2,在使用QFile的过程中,不建议频繁的打开文件写入然后再关闭文件,比如间隔5ms输出日志,IO

性能瓶颈很大,这种情况建议先打开文件不要关闭,等待合适的时机比如析构函数中或者日期变了

需要重新变换日志文件的时候关闭文件。不然短时间内大量的打开关闭文件会很卡,文件越大越

卡。

3,在很多网络应用程序,需要自定义心跳包来保持连接,不然断电或者非法关闭程序,对方识别不

到,需要进行超时检测,但是有些程序没有提供心跳协议,此时需要启用系统层的保活程序,此方

法适用于TCP连接。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7898084.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存