How to RUN my Plain C++ App Code on Qt GUI
-
Hi. I just want to know how to run my c++ code to my qt gui and display its output through a QTextEdit widget. I'm new to qt gui and I've researched for a week now and failed to solve my problem and now my last resort is to ask you here on the forums on how to do it.
Here is my code:
#include <iostream>
#include <stdlib.h>
#include <ctime>
#include <fstream>
#include <conio.h>
#include <string.h>using namespace std;
int countlines();
string getRandomLine();
string getAnswer(string);
void getChoices(string*,string);int main()
{
int numberOfItems = countlines();
string questions[numberOfItems];
string answers[numberOfItems];
string choices[numberOfItems][4];string temp; int i = 0; int o = 0; cout << "Loading questions..."; while(i < numberOfItems) { temp = getRandomLine(); while(o < numberOfItems) { if(questions[o] == temp) { temp = getRandomLine(); o = 0; }else{ o++; } } questions[i] = temp; o=0; i++; } i = 0; while(i < numberOfItems) { answers[i] = getAnswer(questions[i]); i++; } i = 0; while(i < numberOfItems) { getChoices(choices[i],answers[i]); i++; } system("cls"); int answer[numberOfItems]; i = 0; while(i < numberOfItems) { cout << questions[i] << endl; for(int o=0;o<4;o++) cout << o+1 << "]" << choices[i][o] << endl; cin >> answer[i]; i++; } int correct = 0; i = 0; while(i < numberOfItems) { if(choices[i][answer[i] - 1] == answers[i]) correct++; i++; } cout << correct << " imong score!!"; return 0;
}
void getChoices(string choice[],string answer)
{
string line;int maxLine = countlines(); bool found = false; ifstream myfile("sample.txt"); while(getline(myfile,line)) { if(found) { choice[0] = line.substr(0,line.find(" ")); line = line.substr(line.find(" ")+1); choice[1] = line.substr(0,line.find(" ")); line = line.substr(line.find(" ")+1); choice[2] = line.substr(0,line.find(" ")); line = line.substr(line.find(" ")+1); choice[3] = line.substr(0,line.find(" ")); return; } if(answer == line) { found = true; } }
}
string getAnswer(string question)
{
string line;int maxLine = countlines(); bool found = false; ifstream myfile("sample.txt"); while(getline(myfile,line)) { if(found){ return line; } if(question == line) { found = true; } }
}
string getRandomLine()
{
string line;int maxLine = countlines(); int random; srand(time(0)); random = rand() % maxLine; random = random * 3; int count = 0; ifstream myfile ("sample.txt"); while (getline (myfile,line)) { if(random == count) { line; break; } count++; } myfile.close(); return line;
}
int countlines()
{
string line;
int count = 0;ifstream myfile ("sample.txt"); if(myfile.is_open()) { while (getline (myfile,line)) { count++; } count /= 3; myfile.close(); } else { cout << "Unable to open file"; } return count;
}
-
Not sure if thats what you want but you can (i guess - not tested) display your code by reading
.cpp
and/or.h
file and apending text you read toQTextBrowser
like:File inputFile(/*path to your cpp file*/); if (inputFile.open(QIODevice::ReadOnly)) { QTextStream in(&inputFile); while (!in.atEnd()) { QString line = in.readLine(); your_text_browser.append(line); } inputFile.close(); }
Repeat this procedure with
.h
file if needed. -
Not sure if thats what you want but you can (i guess - not tested) display your code by reading
.cpp
and/or.h
file and apending text you read toQTextBrowser
like:File inputFile(/*path to your cpp file*/); if (inputFile.open(QIODevice::ReadOnly)) { QTextStream in(&inputFile); while (!in.atEnd()) { QString line = in.readLine(); your_text_browser.append(line); } inputFile.close(); }
Repeat this procedure with
.h
file if needed.@michelson I'm very sorry to confuse you on my question. Okay, so my code there is a part of my Multiple Choice Quiz Application and that code is the one that's going to read a text file that contains the questions and answers for the quiz. I just want to know how I can display this line to the QTextEdit widget I mentioned:
while(i < numberOfItems)
{
cout << questions[i] << endl;
for(int o=0;o<4;o++)
cout << o+1 << "]" << choices[i][o] << endl; <----------- This one. I want it to be displayed on the QTextEdit widget.
cin >> answer[i];i++;
}
-
Hi. I just want to know how to run my c++ code to my qt gui and display its output through a QTextEdit widget. I'm new to qt gui and I've researched for a week now and failed to solve my problem and now my last resort is to ask you here on the forums on how to do it.
Here is my code:
#include <iostream>
#include <stdlib.h>
#include <ctime>
#include <fstream>
#include <conio.h>
#include <string.h>using namespace std;
int countlines();
string getRandomLine();
string getAnswer(string);
void getChoices(string*,string);int main()
{
int numberOfItems = countlines();
string questions[numberOfItems];
string answers[numberOfItems];
string choices[numberOfItems][4];string temp; int i = 0; int o = 0; cout << "Loading questions..."; while(i < numberOfItems) { temp = getRandomLine(); while(o < numberOfItems) { if(questions[o] == temp) { temp = getRandomLine(); o = 0; }else{ o++; } } questions[i] = temp; o=0; i++; } i = 0; while(i < numberOfItems) { answers[i] = getAnswer(questions[i]); i++; } i = 0; while(i < numberOfItems) { getChoices(choices[i],answers[i]); i++; } system("cls"); int answer[numberOfItems]; i = 0; while(i < numberOfItems) { cout << questions[i] << endl; for(int o=0;o<4;o++) cout << o+1 << "]" << choices[i][o] << endl; cin >> answer[i]; i++; } int correct = 0; i = 0; while(i < numberOfItems) { if(choices[i][answer[i] - 1] == answers[i]) correct++; i++; } cout << correct << " imong score!!"; return 0;
}
void getChoices(string choice[],string answer)
{
string line;int maxLine = countlines(); bool found = false; ifstream myfile("sample.txt"); while(getline(myfile,line)) { if(found) { choice[0] = line.substr(0,line.find(" ")); line = line.substr(line.find(" ")+1); choice[1] = line.substr(0,line.find(" ")); line = line.substr(line.find(" ")+1); choice[2] = line.substr(0,line.find(" ")); line = line.substr(line.find(" ")+1); choice[3] = line.substr(0,line.find(" ")); return; } if(answer == line) { found = true; } }
}
string getAnswer(string question)
{
string line;int maxLine = countlines(); bool found = false; ifstream myfile("sample.txt"); while(getline(myfile,line)) { if(found){ return line; } if(question == line) { found = true; } }
}
string getRandomLine()
{
string line;int maxLine = countlines(); int random; srand(time(0)); random = rand() % maxLine; random = random * 3; int count = 0; ifstream myfile ("sample.txt"); while (getline (myfile,line)) { if(random == count) { line; break; } count++; } myfile.close(); return line;
}
int countlines()
{
string line;
int count = 0;ifstream myfile ("sample.txt"); if(myfile.is_open()) { while (getline (myfile,line)) { count++; } count /= 3; myfile.close(); } else { cout << "Unable to open file"; } return count;
}
@Denmikz what about the code editor or syntax highlighter examples?
-
@Denmikz what about the code editor or syntax highlighter examples?
@Pablo-J.-Rogina again I'm sorry for the confusion. I already edited my post to make things clearer. sorry for my mistake english is not my main language. :)
-
First of all if you need ONLY to display text I'd go for
QLabel
rather thanQTextEdit
. If not you can eaisily append text toQTextEdit
by runningQTextEdit::append(QString)
function ( http://doc.qt.io/qt-4.8/qtextedit.html#append ) so your code would look like this:while(i < numberOfItems) { cout << questions[i] << endl; for(int o=0;o<4;o++) your_text_edit.append(choices[i][o]); cin >> answer[i]; i++; }
Of course assuming
choices
table is holdingQString
s. -
First of all if you need ONLY to display text I'd go for
QLabel
rather thanQTextEdit
. If not you can eaisily append text toQTextEdit
by runningQTextEdit::append(QString)
function ( http://doc.qt.io/qt-4.8/qtextedit.html#append ) so your code would look like this:while(i < numberOfItems) { cout << questions[i] << endl; for(int o=0;o<4;o++) your_text_edit.append(choices[i][o]); cin >> answer[i]; i++; }
Of course assuming
choices
table is holdingQString
s.@michelson oh okay. but will it run? because i and o there are both int or do I have to convert those to QString?
-
Dude, I meant in the array choices you hold
QStrings
so the definition of it (which is missing in code included above) would be like:QString choices[10][4];
@michelson oh sorry my bad. I'm going to try it now. Thanks for your help. :)
-
@michelson oh sorry my bad. I'm going to try it now. Thanks for your help. :)
@michelson I just did what you told me to do on my code and my app compiled but when I push the pushbutton assigned to trigger the code nothing displayed on my QTextEdit.
-
Are you sure that
choices
is filled with non-emptyQStrings
?
Try filling it "by hand" like:choices[0][0] = "Choice [0][0]"; choices[0][1] = "Choice [0][1]"; choices[0][2] = "Choice [0][2]"; choices[0][3] = "Choice [0][3]"; choices[1][0] = "Choice [1][0]"; choices[1][1] = "Choice [1][1]"; choices[1][2] = "Choice [1][2]"; choices[1][3] = "Choice [1][3]";
i dont know the exact dimensions of it but I guess two levels are enough for tests. If nothing displays this time we will try to figure it out.