• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Błąd expected unqualified-id before ( token

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
–4 głosów
2,900 wizyt
pytanie zadane 27 lipca 2017 w C i C++ przez niezalogowany
zamknięte 28 lipca 2017
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
komentarz zamknięcia: Znaleziono rozwiązanie

2 odpowiedzi

0 głosów
odpowiedź 27 lipca 2017 przez Bondrusiek Maniak (61,440 p.)

Witam,

strasznie niedokładnie opisałeś problem. Domyślam się że korzystasz z Qt. Spróbuj dodać do projektu

#include <QDebug>

jeśli nie zadziała pokarz więcej kodu, zwłaszcza opis zmiennej options( options -> currentItem() -> text() ; ).

komentarz 27 lipca 2017 przez niezalogowany

Wiem, że niedokładnie, ale myślałem, że błąd jest w tej linijce tylko go nie widzę patrząc na niego, czasem tak się zdarza.

W pliku widget.h mam

QTableWidget *options; 

W konstruktorze mam:

options = new QTableWidget(); 
options -> setEditTriggers(QAbstractItemView::NoEditTriggers); 

A w funkcji on_option_Button_clicked to co w 1 poście.

W w jeszcze innej funkcji:

connect( options, SIGNAL(cellActivated(int,int)), this, SLOT(on_option_Button_clicked(int,int)) );

(chociaż to mogłem dać w konstruktorze też)

O dziwo gdy zrobię tak:

QTableWidgetItem *it = options -> currentItem(); 
QString op; 
op = it -> text(); // to teraz ten sam błąd jest w tej linii 
qDebug()

 

komentarz 27 lipca 2017 przez Bondrusiek Maniak (61,440 p.)

Może zamiast qDebug(), skorzystaj z QMessageBox

#include <QMessageBox>

a w slocie

on_option_Button_clicked(int,int)){

QMessageBox::information(this, "Informacja", options -> currentItem() ->text());

}

komentarz 27 lipca 2017 przez niezalogowany

Nadal to samo, po prostu rozwala mnie to , nie mam pojęcia o co może chodzić.

Nie wiem czy ma to jakieś znaczenie, ale wewnątrz innej funkcji mam

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);
// zakomentowałem bo powoduje, że aplikacja się wysypuje, nie wiem dlaczego
}

m jest wskaźnikiem na obiekt mojej klasy menu, która ma składnik vector <string> main_op

komentarz 27 lipca 2017 przez Bondrusiek Maniak (61,440 p.)

Wklej kod wtedy będzie łatwiej to ogarnąć.Spróbuj jeszcze dodać wskaźnik this.

options = new QTableWidget(this); 

 

komentarz 27 lipca 2017 przez niezalogowany

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#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 dataReading();

    void on_test_Button_clicked();

    void on_learn_Button_clicked();

    void on_option_Button_clicked(int, int);

    bool event(QEvent *event);

    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 <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 <QEvent>
#include <QMouseEvent>
#include "widget.h"
#include "ui_widget.h"
#include "text.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(this);
    options -> setEditTriggers(QAbstractItemView::NoEditTriggers);

    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::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() -> text();
    QMessageBox::information(this, "Informacja", options -> currentItem() ->text());

    //glowna.push_back( t );
    //m -> select( linearSearch(t.toStdString(), m -> main_op, m -> main_op.size()) );
    //addNewPage();
}

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);
}

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);
    }

    // opcje do wyboru
    pageLayout -> addWidget(options);
    options -> setColumnWidth(0,options -> width());
    connect( options, SIGNAL(cellActivated(int,int)), this, SLOT(on_option_Button_clicked(int,int)) );


    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()
{

}

 

komentarz 27 lipca 2017 przez niezalogowany

Stworzyłem inny projekt i

it -> text()

działało. Stworzyłem od nowa ten mój projekt, użyłem Czyszczenia, qMake i nic nie dało, nadal to samo.

komentarz 27 lipca 2017 przez Bondrusiek Maniak (61,440 p.)

Jeżeli działa Ci w innym projekcie.

Stworzyłem inny projekt i działało

To może masz problem z ustawieniami w QtCreator. Jeżeli nie ma niczego złego w kodzie. To może wejdź w zakładkę Projekty(w QtCreator) i porównaj ustawienia działającego kodu z tym, który nie działa.

komentarz 28 lipca 2017 przez niezalogowany
Już mi zadziałało, jak zmieniłem nazwę załączanej biblioteki z text.h na texto.h
0 głosów
odpowiedź 28 lipca 2017 przez niezalogowany
edycja 28 lipca 2017

Nauczka na przyszłość, jednak wrzucanie całego kodu ma znaczenie. Zazwyczaj tak robiłem, ale tym razem uznałem, że nie ma sensu, bo kod jest bardzo długi. Okazało się, że był problem bo miałem bibliotekę text.h załączoną i jak używałem np. funkcji whatsThis, która również zwraca QString to była ona na czarno i działało wszystko. A jak używałem funkcji text() to była na niebiesko i był błąd. Nawet jak użyłem operatora zakresu

QTableWidgetItem::text()

to i tak nic nie dało.

Nie wiem o co chodziło kompilatorowi. Zrozumiał napis text() jako wywołanie jakiegoś makra czy co? Przecież specyfikator zakresu wyraźnie mówi o co mi chodzi. Dziwne to wszystko. Ktoś wie o co w tym chodzi? Bo chciałbym uniknąć takich niespodzianek na przyszłość. Jak coś to załączam 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

 

komentarz 28 lipca 2017 przez Bondrusiek Maniak (61,440 p.)

Cześć,

coś musiało być źle z funkcją text(). Wszystkie wyrażenia poprzedzone '#' wykonuje preprocesor. Głównie jest to dołączanie jakiegoś kody, podmienianie nazwy etc. Przygotowanie kodu do kompilacji.

Kompilator  nie jest w stanie bezpośrednio wywołać

#ifndef text
#define text

....

Możliwe, że używasz 2 funkcji text(). Jeśli chcesz wykonać wybraną funkcje musisz użyć operatora zakresu ::.

komentarz 28 lipca 2017 przez niezalogowany

No właśnie użyłem

QTableWidgetItem::text()

i nic nie dało. 
Po najechaniu kursorem na wyraz text wyświetla mi się tooltips "define text"

To jest jedna z moich pierwszych starszych bibliotek i dlatego mam po #define małe litery, zmienię je po prostu na duże i będzie po problemie.

Podobne pytania

0 głosów
1 odpowiedź 161 wizyt
pytanie zadane 26 października 2023 w C i C++ przez Piotrek2713 Mądrala (5,500 p.)
0 głosów
1 odpowiedź 1,204 wizyt
0 głosów
2 odpowiedzi 2,691 wizyt
pytanie zadane 1 sierpnia 2018 w C i C++ przez Maciek16 Nowicjusz (120 p.)

93,164 zapytań

142,175 odpowiedzi

321,923 komentarzy

62,490 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 453p. - dia-Chann
  2. 453p. - Marcin Putra
  3. 447p. - Łukasz Piwowar
  4. 443p. - CC PL
  5. 431p. - Łukasz Eckert
  6. 428p. - rafalszastok
  7. 423p. - Michal Drewniak
  8. 423p. - Adrian Wieprzkowicz
  9. 418p. - rucin93
  10. 410p. - Piotr Aleksandrowicz
  11. 408p. - ksalekk
  12. 402p. - Mariusz Fornal
  13. 401p. - Dawid128
  14. 383p. - Hubert Chęciński
  15. 380p. - dominik łempicki
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...