QtC++能够实现不同进制之间的相互转化,能够保存记录,在一次转换结束之后可以直接进行下一次转换也可以重新输入一个数进行新的转换
时间: 2024-01-22 20:18:28 浏览: 79
是的,Qt C++ 可以实现不同进制之间的相互转换,并且可以保存记录。为了实现这个功能,你可以使用 Qt C++ 中的 QLineEdit、QComboBox、QLabel 和 QPushButton 等控件。具体步骤如下:
1. 创建一个界面,包含一个 QLineEdit 控件用于输入数字,一个 QComboBox 控件用于选择数字的进制,一个 QLabel 控件用于显示结果,一个 QPushButton 控件用于进行转换;
2. 在 QPushButton 的 clicked() 信号中,获取 QLineEdit 中的文本并将其转换为对应的进制,然后将转换结果设置为 QLabel 的文本;
3. 在转换结束后,将转换结果保存到一个 QListWidget 控件中,在 QListWidget 中显示所有转换记录;
4. 在界面中添加一个按钮,用于清除所有记录。
代码示例:
```cpp
// 头文件
#include <QWidget>
#include <QLineEdit>
#include <QComboBox>
#include <QLabel>
#include <QPushButton>
#include <QListWidget>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void convert(); // 转换按钮的槽函数
void clear(); // 清除按钮的槽函数
private:
QLineEdit *m_lineEdit; // 输入框
QComboBox *m_comboBox; // 进制选择框
QLabel *m_label; // 显示结果的标签
QPushButton *m_button; // 转换按钮
QListWidget *m_listWidget; // 记录列表
};
```
```cpp
// 实现文件
#include "widget.h"
#include <QGridLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
m_lineEdit = new QLineEdit;
m_comboBox = new QComboBox;
m_comboBox->addItem("十进制");
m_comboBox->addItem("二进制");
m_comboBox->addItem("八进制");
m_comboBox->addItem("十六进制");
m_label = new QLabel;
m_button = new QPushButton("转换");
m_listWidget = new QListWidget;
QPushButton *clearButton = new QPushButton("清除记录");
QGridLayout *layout = new QGridLayout;
layout->addWidget(m_lineEdit, 0, 0);
layout->addWidget(m_comboBox, 0, 1);
layout->addWidget(m_label, 1, 0);
layout->addWidget(m_button, 1, 1);
layout->addWidget(m_listWidget, 2, 0, 1, 2);
layout->addWidget(clearButton, 3, 0, 1, 2);
setLayout(layout);
connect(m_button, &QPushButton::clicked, this, &Widget::convert);
connect(clearButton, &QPushButton::clicked, this, &Widget::clear);
}
Widget::~Widget()
{
}
void Widget::convert()
{
QString text = m_lineEdit->text();
int base = 10;
switch (m_comboBox->currentIndex()) {
case 0: // 十进制
base = 10;
break;
case 1: // 二进制
base = 2;
break;
case 2: // 八进制
base = 8;
break;
case 3: // 十六进制
base = 16;
break;
}
bool ok;
int value = text.toInt(&ok, base);
if (ok) {
m_label->setText(QString::number(value));
m_listWidget->addItem(text + " -> " + QString::number(value));
}
}
void Widget::clear()
{
m_listWidget->clear();
}
```
阅读全文