qt编程,请教个大家这里要怎么写,左边是个comboBox类,可选择1,2,3三个值,后面的line edit可根据
要根据comboBox的选项不同来改变LineEdit的输入数值范围我们可以利用QComboBox的
void currentIndexChanged ( const QString & text ) 这个信号,但选择改变的时候就会
被emit;
要设定LineEdit的输入数值范围我们可以用setValidator()来设置LineEdit的正则表达式。
然后再自定义一个槽根据index来为lineEdit设置不同的Validator。
connect 信号currentIndexChanged 和这个槽 就可以完成这个功能。
偶写的程序
#include "dialogh"
#include <QtGui>
Dialog::Dialog(QWidget parent) :
QDialog(parent)
{
comboBox = new QComboBox;
lineEdit = new QLineEdit;
comboBox->addItem("1");
comboBox->addItem("2");
comboBox->addItem("3");
QHBoxLayout layout = new QHBoxLayout;
layout->addWidget(comboBox);
layout->addWidget(lineEdit);
this->setLayout(layout);
connect(comboBox,SIGNAL(currentIndexChanged(int)),
this,SLOT(selectChanged(int)));
this->selectChanged(0);
}
void Dialog::selectChanged(int index)
{
QRegExp rx;
switch(index)
{
case 0:
rxsetPattern("^\\d$");
break;
case 1:
rxsetPattern("^\\d{0,2}$");
break;
case 2:
rxsetPattern("^\\d{0,3}$");
break;
default:
break;
}
QValidator validator = new QRegExpValidator(rx, this);
lineEdit->setValidator(validator);
}
Qt的绘图比较特别,也是类似MVC方式(MFC是直接绘图,也可类似MVC),数据和视图分开,paintEvent里只要写绘图代码。其它的地方处理数据,更新完了数据,直接update就会重绘。
这个是算法问题,和QT本身没有关系
这样的算法可以自行设计的
1。转字符串。将文件数据的所有字节转换为16位字符串,全部存储即可
2。字符串转。将文本数据每两个字符的文本数字转换为1个字节数据,然后全部存储即可
################################################################
我上面的是和字符串之间互转的一种思路而已,楼主其实可以根据具体实现要求设计算法
根据上述所述算法,我简单说一下思路吧,这里使用C标准库函数完成,当然也可以使用QT中的文件操作类,看个人喜好了:
1。文件读写
fopen,fclose,fread,fwrite,feof,ftell,fseek
fopen,fclose 用于打开关闭文件
fread,fwrite 用于读写文件数据
feof 用于判断文件指针是否到末尾
ftell 判断当前文件指针位置
fseek 用于移动文件指针
2。转字符串
使用fread读取文件二进制数据到内存缓冲区,将每个字节(8位)的16进制形式转换为字符串,比如EE-> 转换为字符串"EE"
然后使用fwrite存储到目标文本文件
3。字符串转
使用fread每两个字节读取一次,将读取的两字节字符串,将每个字节分别转换为字符所代表的16进制值,比如字符“E”,转换为整数E(16进制),然后每两个16进制数组成一个,拼装为一个8位整数。具体可以这样,将高位数逻辑左移4位,然后加上低位即可
最后使用fwrite写入文件
qt编程,请教个大家这里要怎么写,左边是个comboBox类,可选择1,2,3三个值,后面的line edit可根据
本文2023-11-08 16:44:54发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/437772.html