У меня есть comboBox в Qt GUI в mainwindow.cpp. У меня есть этот текстовый файл со списком писем и имен сотрудников вроде этого (это всего лишь пример файла):
Pete White [email protected]
Jack Peterson [email protected]
Mike Jackson [email protected]
Dave Middleton [email protected]
Sylvester Brown [email protected]
Поэтому ComboBox должен отображать эти имена, но НЕ электронные письма, поэтому, я думаю, я мог бы прочитать этот файл в виде 2D-массива. (Я знаю, как это сделать в C, но не в C++ или Qt) И тогда мне нужен только первый столбец.
Этот comboBox используется в приложении простой формы. Поэтому, если эта форма заполнена, она помещает эти заливки в переменную. Так что вот этот Subject = "Soccer"
. Все остальные входы работали (например, тема), но с этим другим. Если выбран Pete White
, он не должен быть email = "[email protected]"
email = "Pete White"
, но по email = "[email protected]"
.
Это, возможно, объяснило тихую неопределенность, но спасибо, что помогли мне :) Это может помочь, если у вас есть что-то визуальное:
* Это голландский, так что не против другого текста в изображении :)
Вы можете прочитать файл в QStringList и удалить или сохранить электронную почту, если это необходимо:
QFile file("path_to_file");
file.open(QIODevice::ReadOnly);
// reads file, splits it by newline symbol and puts it to qstringlist
QStringList list=QString(file.readAll()).split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
for (int i=0;i<list.count();i++){
list[i]=list[i].simplified(); // removing unneeded spaces inside string
list[i].remove(list.at(i).section(" ",-1)); // removing word following the last space, where email is in example
//(if email is needed, just store it somewhere before removing)
// list.at(i).section(" ",-1) - email
// list.at(i).section(" ",0,list.at(i).count()-1) -name and surname
}
file.close();
подробнее о разделе здесь
Вы не указали, поэтому я предполагаю, что этот файл имеет элементы фиксированной ширины, поэтому имя длиной 15 символов, а остальная часть строки - адрес электронной почты.
Теперь вы хотите прочитать файл, разделить строку, создать QPair<String, String>
и поместить его в QList
:
int main(int argc, char *argv[])
{
QList<QPair<QString, QString> > lst;
QFile inputFile("addresses.txt");
if (inputFile.open(QIODevice::ReadOnly))
{
QTextStream in(&inputFile);
while ( !in.atEnd() )
{
QString line = in.readLine();
// use mid to split line - but you could use QString::split to split on character
lst.append(qMakePair(line.mid(0, 15).trimmed(), line.mid(15).trimmed()));
}
}
inputFile.close();
for(int i=0; i< lst.count(); i++)
{
std::cout << "Name: " << qPrintable(lst[i].first) << " Address: " << qPrintable(lst[i].second) << std::endl;
}
}
C2039: 'cout' : is not a member of 'std'
#include <iostream>
.