gpt4 book ai didi

c++ - 创建高效函数

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:27 25 4
gpt4 key购买 nike

我是初学者,正在学习 C++ 的第四周;我一直在研究 CodeBlocks,但由于我对制作 GUI 感兴趣,所以我转向了 Qt Creator。回到 CodeBlocks,我创建了一个函数,可以避免下面代码中的所有重复,只更改“TXT 文件”。然而,对于 Qt Creator 的“特化”C++,我很难理解如何创建一个函数来避免所有这些重复。

有什么想法吗? (我对这个 Qt 项目太深入了,无法回到 CodeBlocks。)

“TXT 文件”根据用户选择的 RadioButton 而变化。

void MovierRec::on_searchButton_clicked()
{
int randomValue = qrand() % 100;
QList<QString> titles;
if(ui->modernButton->isChecked())
{
QFile myfile(":/classics.txt");
if (myfile.open(QIODevice::ReadOnly))
{
QTextStream in(&myfile);
while (!in.atEnd())
{
QString line = in.readLine();
titles.append(line);
}
myfile.close();
ui->textBrowser->setPlainText (titles[randomValue]);
}
}
else if(ui->romanceButton->isChecked())
{
QFile myfile(":/romance.txt");
if (myfile.open(QIODevice::ReadOnly))
{
QTextStream in(&myfile);
while (!in.atEnd())
{
QString line = in.readLine();
titles.append(line);
}
myfile.close();
ui->textBrowser->setPlainText (titles[randomValue]);
}
}

else if(ui->scifiButton->isChecked())
{
QFile myfile(":/scifi.txt");
if (myfile.open(QIODevice::ReadOnly))
{
QTextStream in(&myfile);
while (!in.atEnd())
{
QString line = in.readLine();
//titles.append(line);
}
myfile.close();
ui->textBrowser->setPlainText (titles[randomValue]);
}
}

最佳答案

这是通用编程问题,可以用更好的方式重构代码:

// I didn't dig into every line of the code. just provide the refactor idea here
void getTitle(const QString& file_name, QList<QString>& titles;)
{
QFile myfile(file_name);
if (myfile.open(QIODevice::ReadOnly))
{
QTextStream in(&myfile);
while (!in.atEnd())
{
QString line = in.readLine();
titles.append(line);
}
myfile.close();
}
}

void MovierRec::on_searchButton_clicked()
{
int randomValue = qrand() % 100;
QList<QString> titles;
if(ui->modernButton->isChecked())
{
getTitle("classics.txt", titles);
}
else if(ui->romanceButton->isChecked())
{
getTitle("romance.txt", titles);
}
else if(ui->scifiButton->isChecked())
{
getTitle("scifi.txt", titles);
}
ui->textBrowser->setPlainText(titles[randomValue]); // move the dup action to the end
}

关于c++ - 创建高效函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13578784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com