• 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

Object Storage Arubacloud
0 głosów
206 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,410 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ź 135 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez amb00 Bywalec (2,000 p.)
0 głosów
0 odpowiedzi 160 wizyt
pytanie zadane 9 czerwca 2016 w C i C++ przez aspoka Mądrala (5,290 p.)
0 głosów
1 odpowiedź 159 wizyt
pytanie zadane 2 maja 2017 w C i C++ przez Sidzej Użytkownik (850 p.)

92,662 zapytań

141,557 odpowiedzi

320,002 komentarzy

62,029 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...