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

Wywołanie konstruktora Dialog::Dialog -- Qt

VPS Starter Arubacloud
0 głosów
865 wizyt
pytanie zadane 28 czerwca 2019 w C i C++ przez amelia.cpp Obywatel (1,860 p.)

Witam, 

czy jest jakiś sposób aby wywołać konstruktor Dialog::Dialog()  w funkcji?

Robię Tic-Tac-Toe w Qt i chcę dodać funcje resetującą "od nowa". W jaki sposób mogę użyć kodu w konstruktora w funkcji?

ui->setupUi(this);

        ui->box-blockSignals(false);
        ui->box2->blockSignals(false);
        ui->box3->blockSignals(false);
        ui->box4->blockSignals(false);
        ui->box5->blockSignals(false);
        ui->box6->blockSignals(false);
        ui->box7->blockSignals(false);
        ui->box8->blockSignals(false);
        ui->box9->blockSignals(false);
        ////////////////////////////////////////////
        /////////ustawianie ikon x, o
        ////////////////////////////////////////////

        pixmap[0].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[0].addPixmap(pixmap[0]);
        ui->box->setIcon(ButtonIcon[0]);
        ui->box->setIconSize(pixmap[0].rect().size());
        // ------------------------------------------
        pixmap[1].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[1].addPixmap(pixmap[1]);
        ui->box2->setIcon(ButtonIcon[1]);
        ui->box2->setIconSize(pixmap[1].rect().size());
        // --------------------------------------------
        pixmap[2].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[2].addPixmap(pixmap[2]);
        ui->box3->setIcon(ButtonIcon[2]);
        ui->box3->setIconSize(pixmap[2].rect().size());
        //----------------------------------------------
        pixmap[3].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[3].addPixmap(pixmap[3]);
        ui->box4->setIcon(ButtonIcon[3]);
        ui->box4->setIconSize(pixmap[3].rect().size());
        //----------------------------------------------
        pixmap[4].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[4].addPixmap(pixmap[4]);
        ui->box5->setIcon(ButtonIcon[4]);
        ui->box5->setIconSize(pixmap[4].rect().size());
        // ----------------------------------------------
        pixmap[5].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[5].addPixmap(pixmap[5]);
        ui->box6->setIcon(ButtonIcon[5]);
        ui->box6->setIconSize(pixmap[5].rect().size());
        // --------------------------------------------
        pixmap[6].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[6].addPixmap(pixmap[6]);
        ui->box7->setIcon(ButtonIcon[6]);
        ui->box7->setIconSize(pixmap[6].rect().size());
        // --------------------------------------------
        pixmap[7].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[7].addPixmap(pixmap[7]);
        ui->box8->setIcon(ButtonIcon[7]);
        ui->box8->setIconSize(pixmap[7].rect().size());
        // --------------------------------------------
        pixmap[8].load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/nic.bmp");
        ButtonIcon[8].addPixmap(pixmap[8]);
        ui->box9->setIcon(ButtonIcon[8]);
        ui->box9->setIconSize(pixmap[8].rect().size());

        /////////////////////////////////////////////////
               //ustawienie ikonki informującej o turze gracza

        m_logo_pic.load("C:/Users/HP/Documents/PROGRAMOWANIE/C++/Qt projects/TicTacToe/osmall.bmp");
        ui->tura_obrazek->setPixmap(m_logo_pic);
        t = 'o';
        // przypisanie char'om 'n'
        for(int i=0; i<9; i++)
            boxs_char[i] = 'n';
}

 

1 odpowiedź

0 głosów
odpowiedź 28 czerwca 2019 przez Szfierzak Gaduła (3,750 p.)
Czy przeniesienie kodu z konstruktora do np. prywatnej funkcji robiącej wszystko to co trzeba do ustawień początkowych, i wywołanie jej w konstruktorze i/lub później w razie resetu wywołanie tej funkcji również przez inną resetującą ustawienia, rozwiązuje problem?
komentarz 28 czerwca 2019 przez amelia.cpp Obywatel (1,860 p.)
Niestety nie, wyskakuje problem z niezdefiniowanym ui
komentarz 28 czerwca 2019 przez Szfierzak Gaduła (3,750 p.)
A jak spróbujesz odwołać się do ui, przez this->ui->.... też dostajesz ten błąd?
komentarz 29 czerwca 2019 przez amelia.cpp Obywatel (1,860 p.)
wyskakuje błąd: invalid use of 'this' in non-member function
komentarz 29 czerwca 2019 przez Szfierzak Gaduła (3,750 p.)

A możesz wrzucić więcej kodu? Na pierwszy rzut oka wygląda, jakbyś zapomniała zadeklarować funkcji jako składowej klasy w pliku cpp, tzn. np. zamiast

void NazwaKlasy::nazwaFunckji()
{
 ...
}

masz tylko

void nazwaFunkcji()
{
....
}

 

komentarz 30 czerwca 2019 przez amelia.cpp Obywatel (1,860 p.)
Dzięki :) problem rozwiązany, umieszciłam deklaracje funkcji w klasie Dialog i działa :)

Podobne pytania

0 głosów
2 odpowiedzi 1,815 wizyt
pytanie zadane 30 kwietnia 2015 w C i C++ przez Linker Bywalec (2,690 p.)
0 głosów
0 odpowiedzi 143 wizyt
0 głosów
1 odpowiedź 408 wizyt
pytanie zadane 19 listopada 2020 w C i C++ przez Foszy Początkujący (250 p.)

92,961 zapytań

141,922 odpowiedzi

321,158 komentarzy

62,295 pasjonatów

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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...