Qt:如何在 QVBoxLayout 中交替对齐 QTextEdit?

Posted

技术标签:

【中文标题】Qt:如何在 QVBoxLayout 中交替对齐 QTextEdit?【英文标题】:Qt : How to alternate alignment of a QTextEdit in a QVBoxLayout? 【发布时间】:2021-07-13 02:33:21 【问题描述】:

我想在布局中添加 QTextEdit 小部件并交替对齐

QVBoxLayout *lt = new QVBoxLayout;

for(int i=0;i<5;i++)

    text1 = new QTextEdit;
    text1->setText("Hello world !" + QString::number(i));
    text1->setMaximumSize(100,30);
    lt->addWidget(text1);
    lt->setAlignment(Qt::AlignLeft);

    if(i%2)
    
        lt->setAlignment(Qt::AlignRight);
    
    else
    
        lt->setAlignment(Qt::AlignLeft);
    


setLayout(lt);

但是,QTextEdits 都是靠左对齐的。

我的问题有解决方案吗?

【问题讨论】:

你想在 VBox 中将你的五个小部件布局为(好的,所以我不能在 cmets 中绘制表格)先右后左,还是你想要 文本编辑的内容是右对齐还是左对齐? .. 对于内容,您要调用text1-&gt;setAlignment(Qt::AlignRight),而不是布局上的对齐方式。要将小部件推送到 VBoxLayout 内,您需要在每个 TextEdit 周围使用 QHboxLayout 来进行对齐(或使用 3 列网格) 【参考方案1】:

刚刚检查了Qt doc,我发现在QVBoxLayout中添加我的小部件时我只需要添加一些参数 这是代码:

QVBoxLayout *lt = new QVBoxLayout;

for(int i=0;i<5;i++)

    text1 = new QTextEdit;
    text1->setText("Hello world !" + QString::number(i));
    text1->setMaximumSize(100,30);
    
    if(i%2)
    
        lt->addWidget(text1, 0, Qt::AlignRight);
    
    else
    
        lt->addWidget(text1, 0, Qt::AlignLeft);
    

【讨论】:

以上是关于Qt:如何在 QVBoxLayout 中交替对齐 QTextEdit?的主要内容,如果未能解决你的问题,请参考以下文章

当 QProgressBar 存在时如何居中对齐 QPushButton?

如何在 QVBoxLayout 中显示 QString

如何在 Qt 表单类中调整 OpenGL 小部件的大小

Qt垂直/水平布局管理器(QBoxLayout,QHBoxLayout, QVBoxLayout)

Qt - 如何控制 QLayout 中的小部件大小

怎么可以使QPushButton的text按照左对齐的方式显示?