如下QT程序怎么没有效果?
本帖最后由 冥界3大法王 于 2023-5-4 23:01 编辑如下QT程序怎么没有效果?没有加载到列表中呢?{:301_973:}{:301_974:}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSettings>
#include <QString>
#include <QDebug>
#include <QDir>
#pragma execution_character_set("utf-8");
#include <QRegularExpression>
#include <QFile>
void MainWindow::on_LoadtxtToList_clicked()
{
ui->listWidget->clear();
QFile dataFile("c:\1.txt");
if (dataFile.open(QFile::ReadOnly|QIODevice::Text))
{
QTextStream data(&dataFile);
QStringList fonts;
QString line;
while (!data.atEnd()) //逐行读取文本,并去除每行的回车
line = data.readLine();
line.remove('\n');
ui->listWidget->addItems(fonts); //把各行添加到listwidget
}
}
你没有把line添加到fonts列表中,所以ui->listWidget->addItems(fonts)没有效果.你应该在while循环中使用fonts.append(line)或者fonts << line来把每一行的文本加入到列表中
hrh123 发表于 2023-5-4 23:12
你没有把line添加到fonts列表中,所以ui->listWidget->addItems(fonts)没有效果.你应该在while循环中使用fon ...
网上粘来的,QT饭桶表示看不懂,天朝不少都是英文盲流弄得代码不少粘错,就是前后少东西。确实太菜了。。。。 @hrh123
不会改,受累修改个完整不报错的代码吧,谢谢。 上面都有一个大前提就怕while的花括号必须带上,要不然仅仅生效其后一句。
其次是fonts应该需要把line内容追加进去。
if (dataFile.open(QFile::ReadOnly|QIODevice::Text))
{
QTextStream data(&dataFile);
QStringList fonts;
QString line;
while (!data.atEnd()) { //逐行读取文本,并去除每行的回车
line = data.readLine();
line.remove('\n');
fonts.append(line);
}
ui->listWidget->addItems(fonts); //把各行添加到listwidget
} Eaglecad 发表于 2023-5-5 07:21
上面都有一个大前提就怕while的花括号必须带上,要不然仅仅生效其后一句。
其次是fonts应该需要把line内容 ...
赞一个!! 本帖最后由 236A 于 2023-5-5 07:51 编辑
少了个花括号 编译器不报错的吗
QString &QString::remove(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)要去空格因该拿他的返回值line.remove('\n') 不会改变line的值 Eaglecad 发表于 2023-5-5 07:21
上面都有一个大前提就怕while的花括号必须带上,要不然仅仅生效其后一句。
其次是fonts应该需要把line内容 ...
不 行啊,哥们,还是没有动静呢,没有报错同时。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSettings>
#include <QString>
#include <QDebug>
#include <QDir>
#pragma execution_character_set("utf-8");
#include <QRegularExpression>
#include <QFile>
#include <QTextStream>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked() //读取INI,设置到Edit1 2 3 控件上!
{
QSettings *configIniRead = new QSettings("config.ini", QSettings::IniFormat);
//将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型
QString jianzhi = configIniRead->value("/ip/first").toString();
ui->Edit3->setText(jianzhi);
// QString portResult = configIniRead->value("/port/open").toString();
// ui->Edit2->setText(portResult);
//qDebug() << ipResult;//打印得到的结果
//qDebug() << portResult;
//读入入完成后删除指针
delete configIniRead;
//获取应用程序可执行文件所在的目录
qDebug()<<"current applicationDirPath: "<<QCoreApplication::applicationDirPath();
QString strPath = QCoreApplication::applicationDirPath();
QDir dir(strPath);
bool bSuccess = dir.cdUp();
if (bSuccess == true) {
strPath = dir.path() + "/";
}
qDebug()<<"上一级目录是:"<<strPath;
}
void MainWindow::on_InsertNewItem_clicked()//插入新项到列表中OK了!
{
QListWidgetItem * aItem= new QListWidgetItem("CC");
ui->listWidget->insertItem(ui->listWidget->currentRow(),aItem);
}
void MainWindow::on_LoadtxtToList_clicked()
{
ui->listWidget->clear();
QFile dataFile("c:\1.txt");
if (dataFile.open(QFile::ReadOnly|QIODevice::Text))
{
QTextStream data(&dataFile);
QStringList fonts;
QString line;
while (!data.atEnd()) { //逐行读取文本,并去除每行的回车
line = data.readLine();
line.remove('\n');
fonts.append(line);
}
ui->listWidget->addItems(fonts); //把各行添加到listwidget
}
// QFile file("c:\1.txt");
// if (file.open(QIODevice::ReadOnly | QIODevice::Text))
// {
// while (!file.atEnd())
// {
// QByteArray line = file.readLine();
// QString str(line);
// QRegularExpression re("(?<=^\\[).*(?=\\])");
// QRegularExpression re("(?<=NoteName=).*");
// QRegularExpressionMatch match = re.match(str);
// if (match.hasMatch())
// {
// QString matched = match.captured(0);
// ui->comboBox->addItem(matched);
// }
// QListWidgetItem * aItem= new QListWidgetItem(str);
// ui->listWidget->insertItem(ui->listWidget->currentRow(),aItem);
}
// file.close();
大佬咋不搞delphi了,这玩意还能深入不 void MainWindow::on_btn_load_clicked()
{
ui->listWidget->clear();
QFile file("D:\\1.txt");//文件位置自己改
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd()) {
QString line = file.readLine(); //逐行读取文本,并去除每行的回车
line.remove('\n');
ui->listWidget->addItem(line); //把各行添加到listwidget
}
}
页:
[1]
2