2016-08-23 34 views
-1

我正在编写应用程序来掌握关于Qt的芦苇书,我用几个小工具QPushButtonQPlainTextEdit作了一个应用程序,并将它们添加到QVBoxLayout我可以使用Qt为我的应用程序提供什么视图?

我会从QPlainTextEdit中得到一些文字进行转换。我想用一个模型来转换文本。但是对于模型,我必须使用一些视图,而我不知道用于我的应用程序的视图。

QPlainTextEdit * txt = new QPlainTextEdit(); 
QPushButton *button = new QPushButton("&Submit"); 
QVBoxLayout *phbxLayout = new QVBoxLayout; 

phbxLayout->addWidget(txt); 
phbxLayout->addWidget(button); 

wgt.setLayout(phbxLayout); 

wgt.show(); 

我该怎么办?我应该自己创建视图还是其他视图?

+0

您需要多解释一下问题才能获得帮助。你应该显示你已经尝试过的代码。什么是“改变文本的模式”? –

回答

1

我不认为有任何内置视图窗口小部件来做你想做的。你最好的选择是创建你自己的。这真的不是那么糟糕。您只需从QAbstractItemView子类化,而您只需要实现一个纯虚拟方法即可。这些是将为您提供数据模型数据的方法。剩下的就像一个普通的小部件一样,即。布局,文本框,按钮,不管。当数据模型中的数据发生变化时,您将调用dataChanged()方法,用于更新视图窗口小部件(您的案例中的文本区域)。数据模型就是你所说的“变换”。通常,视图不会进行任何实际的数据操作,这就是数据模型的用途。

参考:

http://doc.qt.io/qt-5/qabstractitemview.html

http://doc.qt.io/qt-5/qabstractitemmodel.html

1

Qt的具有两个模型 - 视图系统:

  1. 基于QAbstractItemModel的一个。

  2. 一个基于QTextDocument

A QPlainTextEdit已经为您提供了一个模型:document()。您可以对其进行修改,或制作副本,然后对其进行修改并传递给一个QTextBrowser以显示:

QTextEdit source; 
QTextBrowser destination; 

auto doc = source.document().clone(&destination); 
// modify the document here 
destination.setDocument(doc); // the previous document is destroyed, if any 

this answer见。

相关问题