您的位置:首页 > 编程语言 > Qt开发

QT布局管理程序实现的学习及 QTextEdit编辑

2013-03-14 14:30 357 查看


QT布局管理程序实现的学习

分类: qt

1. qt 中对控件布局可以使用水平、垂直和Grid布局管理器来进行

QHBoxLayout:水平排列控件。

QVBoxLayout:垂直排列控件。

QGridLayout:按矩阵方式排列控件。

水平布局管理器可以把它所管理的部件以水平的顺序依次排开。垂直管理器类似,它可以把它所管理的部件以垂直的顺序依次排开。Grid布局管理器可以以网格的形式,将它所管理的部件以一定的矩阵形式排列.

2.在QT assistant 中查找QHBoxLayout,可以看到,应用布局的关键在于QBoxLayout的addWidget()函数,和QWidget的setLayout()函数,如果有多个Widget时,需要多层次的布局,此时还会用到addlayout()和addStretch()函数

对于何时用addlayout()和addStretch()以及怎么用的问题,看地址簿例子就会明白

在多层次布局时,用addlayout()可以向主布局添加子布局

而使用addStretch(),可以使布局中的widget之间添加延伸空间,默认值0表示widget之间没有延伸(因为我们默认的布局对齐方式为Qt::Alignment alignment = 0,它的含义是widget会填充整个cell,这样会使布局的widget之间有空间,使用addstretch()可以消除这种空间)

看qt学习之路(8)中对addstretch()的含义的解释。

要掌握这个内容,实现QT学习之路(7)的例子。

3. 关于QGridLayout,关键是要理解其中函数addwidget()中各个参数的含义

void QGridLayout::addWidget ( QWidget * widget,
int row, int column, Qt::Alignment alignment =
0 )

void QGridLayout::addWidget ( QWidget * widget,
int fromRow, int fromColumn, int rowSpan, int columnSpan,Qt::Alignment alignment =
0 )

第一个的布局的参数的意思依次为:QGridLayoutName,行号,列号。

第二个的布局的参数的意思依次为:QGridLayoutName,行号,列号,行宽,列宽。

QT学习之路(7)中例子用QGridLayout来实现的源代码:

QGridLayout *mainLayout = new QGridLayout;

mainLayout->addWidget(m_pLabel,0,0,1,1);

mainLayout->addWidget(m_pLineEdit,0,1,1,1);

mainLayout->addWidget(m_pFindPushBtn,0,2,1,1);

mainLayout->addWidget(m_pMatchCaseCheckBx,1,0,1,1);

mainLayout->addWidget(m_pClosePushBtn,1,2,1,1);

mainLayout->addWidget(m_pSearchBackCheckBx,3,0,1,1);

this->setLayout(mainLayout);

4、用QT Designer中的布局管理器时,可以把该控件和窗口选中,选择layout in a Grid,从而可以使控件随窗口的大小而改变。

5.地址簿的例子:QGridLayout为主布局,结合QVBoxLayout和QHBoxLayout子布局

值得学习。

环境Qt4.7,ui是我的界面类

1、向QTextEdit中当前光标位置添加一行字符串message

ui.messageTextEdit->textCursor().insertText(message+"\n");

2、向QTextEdit中末尾追加一行字符串message

QString content = ui.contentTextEdit->append(message+"\n");

3、读取QTextEdit的值

QString content = ui.contentTextEdit->toPlainText();

4、光标移到末尾

ui.textBrowser_2->moveCursor(QTextCursor::End);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: