QT中lineedit显示小数问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中lineedit显示小数问题相关的知识,希望对你有一定的参考价值。

代码如下:
if (file.open(QFile::ReadOnly ) )

QTextStream stream(&file);
str=stream.readLine(); //str是QString类型
b=str.toFloat(); //b是float类型
file.close();


j=k*i+b; //i,j,k,b都是float类型
ui->text3->setText(QString::number(j)); //setText是需要QString类型的,这里转了一下
或者按下面的转也行:
QString sss;
sss=QString("%1").arg(j); //float转为QString
这里lineedit显示的时候就出现问题了,它是显示的小数,比如1.234,没问题.
但是如果 j的值 正好等于20.000,就会显示20,或者等于20.10,就会显示20.1,
我想要一直显示小数点后面2位,20.000就显示20.00,20.123就显示20.12
求大神指点

参考技术A 这么用
QString sss = QString::number(j, 'f', 2);本回答被提问者采纳

Qt:在映射到 AbstractListModel 的 LineEdit 小部件上显示工具提示

【中文标题】Qt:在映射到 AbstractListModel 的 LineEdit 小部件上显示工具提示【英文标题】:Qt: display tooltip on LineEdit widget that is mapped to AbstractListModel 【发布时间】:2017-05-23 18:22:47 【问题描述】:

情况

下面是一个 Qt 示例,其中包含一个 AbstractListModel 和两个链接到此模型的显示小部件(一个 ListView 和一个 LineEdit):

from PyQt5 import QtCore, QtWidgets

class ListModel(QtCore.QAbstractListModel):
    def __init__(self, data_values, tooltips, parent=None):
        super().__init__(parent)
        self.data_values = data_values
        self.tooltips = tooltips


    def rowCount(self, parent=QtCore.QModelIndex()):
        return len(self.data_values)


    def data(self, index, role=QtCore.Qt.DisplayRole):
        if (role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole):
            return self.data_values[index.row()]
        elif role == QtCore.Qt.ToolTipRole:
            return self.tooltips[index.row()]


class Window(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        data_values = ['apple', 'pumpkin', 'orange']
        tooltips = [
            "Don't accept when offered by evil queen in disguise.",
            "Excellent halloween decoration.",
            "Good source of Vitamin C.",
        ]
        self.list_model = ListModel(data_values, tooltips)

        self.line_edit = QtWidgets.QLineEdit(parent=self)
        self.line_edit.setReadOnly(True)

        self.list_view = QtWidgets.QListView(parent=self)
        self.list_view.setModel(self.list_model)
        self.list_view.setCurrentIndex(self.list_model.index(0))

        self.mapper = QtWidgets.QDataWidgetMapper(parent=self)
        self.mapper.setModel(self.list_model)
        self.mapper.addMapping(self.line_edit, 0)
        self.mapper.toFirst()

        self.list_view.selectionModel().currentRowChanged.connect(self.mapper.setCurrentModelIndex)

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.list_view, 0)
        layout.insertSpacing(1, 40)
        layout.addWidget(self.line_edit, 2)
        self.setLayout(layout)


qt_application = QtWidgets.QApplication([])
window = Window()
window.show()
qt_application.exec_()

我已配置AbstractListModeldata 方法为链接的小部件提供工具提示文本。当鼠标光标放在ListView 中的某个项目上时,确实会出现一个工具提示。但是,当鼠标光标放在LineEdit 上时,不会出现工具提示。

问题

我希望LineEdit 显示一个工具提示,其中包含链接的AbstractListModel 提供的文本。有什么办法可以实现这一目标吗?

【问题讨论】:

【参考方案1】:

QDataWidgetMapper 无法实现此目的。 QDataWidgetMapper 始终使用模型的 Qt::EditRole 值。可以建议使用addMapping 的重载版本和TableModel,其中一列(section)用于显示,一列用于工具提示,但这是不可能的,因为QDataWidgetMapper 只允许您实现@987654322 @:

如果小部件已经映射到一个部分,旧的映射将是 替换为新的。

解决方案

最简单的解决方案是自己创建一个插槽,将其连接到currentRowChanged 信号并手动设置工具提示 (QWidget::setToolTip) 和文本 (QLineEdit::setText)。

【讨论】:

啊哈,很高兴知道QDataWidgetMapper 总是使用Qt::EditRole。这已经很好地解释了为什么在我的示例中没有发生任何事情。谢谢。

以上是关于QT中lineedit显示小数问题的主要内容,如果未能解决你的问题,请参考以下文章

QT中用qstring显示固定小数点出现bug

在Qt编程在lineEdit中输入完内容后点击pushbutton并在TextBrowser显示lineEdit中的内容

Qt:在映射到 AbstractListModel 的 LineEdit 小部件上显示工具提示

qt正则表达式的小数点怎么表达?

pyqt 中怎么限定lineedit的数据类型

QT中如何设置comboBox只能输入数字