Qt中的整数用户输入
Posted
技术标签:
【中文标题】Qt中的整数用户输入【英文标题】:Integer user input in Qt 【发布时间】:2020-07-22 17:35:12 【问题描述】:我正在用 Qt 编写一个 GUI 应用程序。
我需要从用户那里得到一组整数,它们将被加载到一个数组中。在视觉上做到这一点的最佳方法是什么。这似乎很容易,但我在 GUI 应用程序方面没有太多经验。我正在考虑使用 lineEdit,但它将文本作为输入,我不确定在这种情况下如何处理输入。
如果有人有类似的问题,以供将来参考,这就是我使用行编辑的方式:
//Read input as string from line edit
QString input_text = ui->lineEdit->text();
if(input_text.isEmpty())
return;
//Check for letters or symbols
for (int i = 0; i < input_text.length(); i++)
if(input_text.at(i).isLetter() || input_text.at(i).isSymbol() || input_text.at(i).isPunct())
return;
//Split input in parts around 'space'
QStringList input_list = input_text.split(" ", QString::SkipEmptyParts);
//Copy those parts to array as integers
for (int i = 0; i < input_list.length() && i < current_array_size; i++)
array.replace(i, input_list.at(i).toInt() );
【问题讨论】:
嘿,首先欢迎来到 SO。你说你正在写一些东西,所以也许你可以从发布你的代码和你面临的问题开始。请考虑查看minimal reproducible exampleQLineEdit::text
给你QString
。使用QString::toInt
获取大概输入的整数,或者如果文本不代表整数,则做出相应的反应。
@scopchanov 如果输入看起来像这样:“4 5 7 1”或“5,6,7”我可以分别得到每个数字吗?这个想法是用户将编写所有输入一次并点击一个按钮。感谢您的帮助。
@dboy 哈哈,谢谢,但我不知道这有什么帮助,因为我没有错误或其他东西。我在问一个我不确定如何解决的问题,所以它没有实施 jet。希望这能澄清这一点并感谢您的帮助
当然,您可以将输入分解为单个数字。 QString
提供了一系列简洁的方法来帮助您。这取决于特定的用例,应该使用哪些以及如何使用。这正是 mre 的用途。但是当你说,我根本不知道如何解决这个问题时,你不需要在这个网站上发布问题,而是阅读一本书或教程之类的东西。查看description of the qt tag 获取有关此主题的一些非常有用的资源。
【参考方案1】:
列表视图或表格视图或列表小部件之类的东西可能是一个很好的起点:
https://doc.qt.io/archives/qt-4.8/qlistview.html https://doc.qt.io/archives/qt-4.8/qtableview.html https://doc.qt.io/qt-5/qlistwidget.html将此与 QLineEdit 作为输入机制结合使用。
用户输入数字 - 点击回车(链接该信号以验证并输入您想要的偶数列表的数字)。
然后,当您想获取数字时,请使用 qlistview(或其他)来填充向量......或者只是将数据留在 Qlistview 中而不使用向量(取决于您想要做什么)。 ...
【讨论】:
@scopchanov 我可能不明白 OP 只想使用 QLineEdit,如果是这样,我的错。至于“到底为什么?” - 拥有一个列表和一个单独的条目“框”是 GUI 中相当标准的模式,你可以在任何地方看到它,因为它非常直观。当然,你没有必须那样做。但是,例如,您可能有一个很长的列表,但您总是希望条目“字段”位于顶部,很明显它是一个数据输入位置。还有其他模式 - 并不是说这是 100% 唯一的方法,它是一个暗示性的答案。但是 我明白你的意思,到底为什么确实不是表达我观点的最佳方式。对于那个很抱歉!但是,当 OP 显然要处理更简单的事情时,我真的不会为 UI 方面而烦恼,无论使用何种模式(直接数据操作或通过输入表单)。 @scopchanov 不用担心。公平点,我可能误解了这个问题 - 它似乎已经更新了很多,所以我会重新考虑“答案”或删除它 嗯,当一开始没有问题时,很难回答。 :)【参考方案2】:你也试试这个:
int INT_NUM ;
QString STRING_NUM = ui->Line_Edit->text();
INT_NUM = STRING_NUM.toInt();
【讨论】:
以上是关于Qt中的整数用户输入的主要内容,如果未能解决你的问题,请参考以下文章
Qt5 和 QML:如何使用 WebEngine Quick Nano Browser 自动输入用户名和密码