qDebug() << options -> currentItem() -> text() ;
expected unqualified-id before ( token
???
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QEvent>
#include <QStackedWidget>
#include <QHBoxLayout>
#include <QPushButton>
#include <QTableWidget>
#include "languagedialog.h"
#include "menu.h"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
bool event(QEvent *event);
bool dataReading();
void on_test_Button_clicked();
void on_learn_Button_clicked();
void on_option_Button_clicked(int, int);
void on_back_Button_clicked();
void on_enter_Button_clicked();
void addNewPage();
void on_search_Button_clicked();
void on_add_Button_clicked();
void on_delete_Button_clicked();
private:
Ui::Widget *ui;
QStackedWidget *pages;
// główne opcje w menu
QPushButton *test_Button;
QPushButton *learn_Button;
QPushButton *search_Button;
QPushButton *add_Button;
QPushButton *delete_Button;
QPushButton *quit_Button;
// do opcji "Test" i "Nauka"
QHBoxLayout *choiceLayout;
QPushButton *back;
QPushButton *enter;
QTableWidget *options;
// zmienna mówi czy ktoś wybrał opcję "Test" czy "Nauka" (jej użycie bardza skraca kod)
enum mode
{
test,
learn,
nothing
};
mode md;
int j;
vector < int > numery_tematow;
Menu *m;
vector < QString > glowna;
// dialog wyboru języka
LanguageDialog *languageDialog;
};
#endif // WIDGET_H
widget.cpp
#include <QMessageBox>
#include <QObject>
#include <QWidget>
#include <QEvent>
#include <QMouseEvent>
#include <QDebug>
#include <QStackedWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QAbstractItemView>
#include <QTextEdit>
#include <QComboBox>
#include <QLabel>
#include <QFont>
#include <QFontMetrics>
#include <QFile>
#include <QTextStream>
#include "widget.h"
#include "ui_widget.h"
#include "texto.h"
#include "algorithms.h"
using namespace std;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setMinimumSize(600, 400);
pages = new QStackedWidget;
//////////////////////////////////////////////////
test_Button = new QPushButton("Test");
learn_Button = new QPushButton("Nauka");
options = new QTableWidget();
options -> setEditTriggers(QAbstractItemView::NoEditTriggers);
connect( options, SIGNAL(cellActivated(int,int)), this, SLOT(on_option_Button_clicked(int,int)) );
choiceLayout = new QHBoxLayout;
back = new QPushButton("Cofnij");
enter = new QPushButton("Zatwierdź");
choiceLayout -> addWidget(back);
choiceLayout -> addWidget(enter);
md = nothing;
j = 0;
//////////////////////////////////////////////////
search_Button = new QPushButton("Wyszukiwanie");
add_Button = new QPushButton("Dodawanie słówek");
delete_Button = new QPushButton("Usuwanie słówek");
quit_Button = new QPushButton("Wyjście");
//////////////////////////////////////////////////
connect(test_Button, SIGNAL(clicked()), this, SLOT(on_test_Button_clicked()));
connect(learn_Button, SIGNAL(clicked()), this, SLOT(on_learn_Button_clicked()));
connect( back, SIGNAL(clicked()), this, SLOT(on_back_Button_clicked()) );
connect( enter, SIGNAL(clicked()), this, SLOT(on_enter_Button_clicked()) );
//////////////////////////////////////////////////
connect(search_Button, SIGNAL(clicked()), this, SLOT(on_search_Button_clicked()));
connect(add_Button, SIGNAL(clicked()), this, SLOT(on_add_Button_clicked()));
connect(delete_Button, SIGNAL(clicked()), this, SLOT(on_delete_Button_clicked()));
connect(quit_Button, SIGNAL(clicked()), qApp, SLOT(quit()));
//////////////////////////////////////////////////
QWidget *buttons = new QWidget;
QVBoxLayout *buttons_Layout = new QVBoxLayout;
buttons_Layout -> addWidget(test_Button);
buttons_Layout -> addWidget(learn_Button);
buttons_Layout -> addWidget(search_Button);
buttons_Layout -> addWidget(add_Button);
buttons_Layout -> addWidget(delete_Button);
buttons_Layout -> addWidget(quit_Button);
buttons -> setLayout(buttons_Layout);
QWidget *menu_Glowne = new QWidget;
QHBoxLayout *menu_GlowneLayout = new QHBoxLayout;
menu_GlowneLayout -> addSpacing(100);
menu_GlowneLayout -> addWidget(buttons);
menu_GlowneLayout -> addSpacing(100);
menu_Glowne -> setLayout(menu_GlowneLayout);
pages -> addWidget(menu_Glowne);
// ostateczne ustawienie layoutu dla okna głównego(nie ma znaczenia rodzaj layoutu poniżej)
QHBoxLayout *layout = new QHBoxLayout;
layout -> addWidget(pages);
this -> setLayout(layout);
}
Widget::~Widget()
{
delete ui;
}
bool Widget::event(QEvent *event)
{
if (event->type() == QEvent::MouseButtonPress)
{
QMouseEvent *mouseEvent = static_cast <QMouseEvent *>(event);
if( mouseEvent -> x() > 100 )
{
qDebug() << mouseEvent -> x();
}
return true;
}
// standard event processing
return QWidget::event(event);
}
bool Widget::dataReading()
{
////////// WYBÓR JĘZYKA //////////
languageDialog = new LanguageDialog(this);
languageDialog -> exec();
if( languageDialog -> result() == QDialog::Rejected )
return false;
QString language = languageDialog -> languages -> currentText();
////////// WYBÓR JĘZYKA //////////
string *topics;
int count_topics;
string *categories;
int count_categories;
//////////////////////////////////////////////////
QString path1 = language + "/" + "tematy.txt";
QFile file1(path1);
QTextStream in1(&file1);
QString line1;
if( !file1.open(QIODevice::ReadOnly | QIODevice::Text) )
{
QMessageBox::critical(this, "Błąd otwarcia pliku " + path1, file1.errorString());
return false;
}
count_topics = counting( path1.toStdString() );
topics = new string [count_topics];
string *ptr_top = topics;
while( (line1 = in1.readLine()) != 0 )
{
*ptr_top = line1.toStdString();
ptr_top++;
}
file1.close();
//////////////////////////////////////////////////
QFile topicsList("lista.txt");
QTextStream out(&topicsList);
if( !topicsList.open(QIODevice::WriteOnly | QIODevice::Text) )
{
QMessageBox::critical(this, "Błąd otwarcia pliku \"lista.txt\"", topicsList.errorString());
return false;
}
for(int i = 0; i < count_topics; i++)
out << i+1 << ". " << QString::fromStdString(topics[i]) << endl;
topicsList.close();
//////////////////////////////////////////////////
QString path2 = language + "/" + "kategorie.txt";
QFile file2(path2);
QTextStream in2(&file2);
QString line2;
if( !file2.open(QIODevice::ReadOnly | QIODevice::Text) )
{
QMessageBox::critical(this, "Błąd otwarcia pliku " + path2, file2.errorString());
return false;
}
count_categories = counting( path2.toStdString() );
categories = new string [count_categories];
string *ptr_cat = categories;
while( (line2 = in2.readLine()) != 0 )
{
*ptr_cat = line2.toStdString();
ptr_cat++;
}
file2.close();
//////////////////////////////////////////////////
m = new Menu(count_categories, count_topics, categories, topics);
return true;
}
void Widget::on_test_Button_clicked()
{
if( !dataReading() )
return;
md = test;
glowna.push_back("Kategorie glówne");
addNewPage();
}
void Widget::on_learn_Button_clicked()
{
if( !dataReading() )
return;
md = learn;
glowna.push_back("Kategorie glówne");
addNewPage();
}
void Widget::on_option_Button_clicked(int, int)
{
qDebug() << "Sygnał zadziałał";
qDebug() << options -> currentItem() -> QTableWidgetItem::text();
//glowna.push_back( t );
//m -> select( linearSearch(t.toStdString(), m -> main_op, m -> main_op.size()) );
//addNewPage();
}
void Widget::on_back_Button_clicked()
{
if( glowna.size() == 1 )
return;
m -> back();
glowna.erase( glowna.end() - 1 );
pages -> removeWidget( pages -> currentWidget() );
}
void Widget::on_enter_Button_clicked()
{
}
void Widget::addNewPage()
{
// tworzenie strony do wyświetlenia
QWidget *page = new QWidget;
QVBoxLayout *pageLayout = new QVBoxLayout;
// aktualny wybór
QFont currentFont("ALGERIAN", 16);
QLabel *currentChoice = new QLabel( glowna[ glowna.size()-1 ] );
currentChoice -> setFont(currentFont);
pageLayout -> addWidget(currentChoice);
pageLayout -> setAlignment(currentChoice, Qt::AlignHCenter);
// trzeba ustalić ile miejsca zajmuje najdłuższy tekst przy określonej czcionce, żeby nic nie ucięło
int MAXLength = m -> main_op[0].size();
int index = 0;
for(int i=1; i < m -> main_op.size(); i++)
{
if( m -> main_op[i].size() > MAXLength )
{
MAXLength = m -> main_op[i].size();
index = i;
}
}
QFont font("Times New Roman", 12);
QString theLongestString = QString::fromStdString(m -> main_op[index]);
QFontMetrics fm(font);
int MaxWidth = fm.width(theLongestString);
// trzeba ustalić ile miejsca zajmuje najdłuższy tekst przy określonej czcionce, żeby nic nie ucięło
options -> setFont(font);
options -> setColumnCount(1); // jedna kolumna
options -> setRowCount(m -> main_op.size()); // wiersze
//options -> setColumnWidth(0,MaxWidth+10); // szerokość taka, żeby nie ucięło żadnego tekstu
// podopcje do wyboru
for(int i=0; i < m -> main_op.size(); i++)
{
options -> setItem( 0, i, new QTableWidgetItem( QString::fromStdString( m -> main_op[i] ) ) );
//options -> item(0,i) -> setTextAlignment(Qt::AlignHCenter);
qDebug() << "i = " << i;
}
// opcje do wyboru
pageLayout -> addWidget(options);
options -> setColumnWidth(0,options -> width()-100);
qDebug() << options -> width();
qDebug() << this -> width();
// przyciski "Cofnij" i "Zatwierdź"
pageLayout -> addLayout(choiceLayout);
//////////////////////////////////////////////////
page -> setLayout(pageLayout);
pages -> addWidget(page);
pages -> setCurrentIndex(pages -> count()-1);
}
void Widget::on_search_Button_clicked()
{
}
void Widget::on_add_Button_clicked()
{
}
void Widget::on_delete_Button_clicked()
{
}
text.h
#ifndef text
#define text
using namespace std;
bool is_white(string line); // sprawdza czy linia składa sie jedynie z białych znaków lub jest pusta
bool is_comp_empty(string line); // sprawdza czy linia jest pusta
bool is_comment(string line); // sprawdza czy linia jest komentarzem
bool is_int_convert(string line); // sprawdza czy linię można przekonwertować na liczbę całkowitą
string without(string line, char ch); // zwraca linię bez znaku przekazanego jako argument
string inttostr(int nr); // konwertuje liczbę całkowitą na ciąg znaków
string substitute(string cont, string what, string for_what); // wyszukuje w tekście frazy i zastępuje je określonym ciągiem znaków
string read(string name, int nr); // zwraca konkretną linijkę z pliku
int counting(string name); // zlicza ilość linii w pliku
int strtoint(); // prosi o wpisanie poprawnego łańcucha znaków i konwertuje go na liczbę całkowitą (działa w konsoli)
void rewrite(string f1, string f2); // przepisuje całą zawartość pliku do innego pliku
void paste(string name, string line, int nr); // wstawia w pliku w określoną linię jakiś tekst, przesuwając niższe o 1 w dół
void cut(string name, int nr); // usuwa z pliku określoną linię, przesuwając niższe o 1 w górę
#endif