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

question-closed QT5 - nie wyświetlają się widgety

Aruba Cloud - Virtual Private Server VPS
0 głosów
251 wizyt
pytanie zadane 17 lipca 2018 w C i C++ przez niezalogowany
zamknięte 18 lipca 2018

Chce w QT stworzyć przycisk niestety wyświetla mi się puste okno. Przy dodawaniu elementów przez QT designer działa wszystko ok. Może ktoś spojrzeć na ten kod:

 

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QMainWindow okno;
	okno.show();
	return a.exec();
}
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
}

MainWindow::~MainWindow()
{
	przycisk = new QPushButton("TAK");
	przycisk->setGeometry(10,10,200,200);
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QMainWindow *okno;
    QPushButton *przycisk;


};

#endif // MAINWINDOW_H
######################################################################
# Automatically generated by qmake (3.0) wt. lip 17 17:17:05 2018
######################################################################

QT += widgets
QT += core
QT += gui
TEMPLATE = app
TARGET = przycisk
INCLUDEPATH += .

# Input
HEADERS += mainwindow.h
SOURCES += main.cpp mainwindow.cpp

 

komentarz zamknięcia: Problem rozwiązany

2 odpowiedzi

0 głosów
odpowiedź 17 lipca 2018 przez Bondrusiek Maniak (61,440 p.)
wybrane 18 lipca 2018
 
Najlepsza

Witam,

dopatrzyłem się w Twoim kodzie kilka błędów. Po pierwsze pisze się Qt a nie QT to częsty błąd i myślę że warto go unikać gdyż świadczy to o poziomie wiedzy.

W pliku mainwindow.h tworzysz   QMainWindow *okno; To jest niepotrzebne(w tym projekcie). Zauważ że Twoja klasa dziedziczy po QMainWindow co w uproszczenie znaczy że tworzysz specjalną klasę. Nie ma sensu tworzyć jeszcze wskaznika na QMainWindow.

W pliku mainwinow.cpp dodaj rodzica dla przycisku w konstruktorze a nie w destruktorze

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
przycisk = new QPushButton("TAK", this);
przycisk->setGeometry(10, 10, 200, 200);
}
MainWindow::~MainWindow()
{
}

W pliku main.cpp dodaj Twoją właściwą klasę

    MainWindow okno; //nie QMainWindow okno;
    okno.show();
    return a.exec();

 

0 głosów
odpowiedź 17 lipca 2018 przez kuba1176 Początkujący (340 p.)
Tworzysz przycisk w destruktorze
komentarz 17 lipca 2018 przez niezalogowany
A jak powinno być?

Podobne pytania

0 głosów
1 odpowiedź 173 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez amb00 Bywalec (2,000 p.)
0 głosów
0 odpowiedzi 170 wizyt
pytanie zadane 9 czerwca 2016 w C i C++ przez aspoka Mądrala (5,290 p.)
0 głosów
1 odpowiedź 185 wizyt
pytanie zadane 2 maja 2017 w C i C++ przez Sidzej Użytkownik (850 p.)

93,335 zapytań

142,330 odpowiedzi

322,416 komentarzy

62,669 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 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!

...