АИ
Антон ИльинскийАқп. 11, 2019, 8:18 Т.Ж.

помогите, ни как не полчается отккрыть третие окно

пока новичок, и только начинаю рабираться, уже раньше поставил и слоты менял и все равно третие окно не хочет открывать, просто вылетает при нажатию авторизация и все.

нужно сделать следуюие открывается первое окно там только одна кнопка, нажимаем открывается второе с вводом логином и паролем, и здесь уже при нажатие на авторизацию должно открыться третие оккно с друззьями пользователя, которое как раз и не открывается

вот сама программа
vk4.tar.gz vk4.tar.gz

взаимодействие между двумя окнами происходит отлично, должно еще открываться третие при нажитие на авторизацию,однако этого не происходит

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <v.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:

    void on_vk_clicked();


private:
    Ui::MainWindow *ui;

   v *sWindow;

};

#endif // MAINWINDOW_H



ifndef REG_H

define REG_H

include

namespace Ui {
class reg;
}

class reg : public QMainWindow
{
Q_OBJECT

public:
explicit reg(QWidget *parent = nullptr);
~reg();

signals:
void rgw();

signals:
void vkw();

private slots:
// Слоты от кнопок главного окна
void on_reg_clicked();
void slot(){
this->vkw();
}

private:
Ui::reg *ui;

};

endif // REG_H

```lang-cpp
#ifndef V_H
#define V_H

#include <QMainWindow>
#include <reg.h>
#include<QStatusBar>


namespace Ui {
class v;
}

class v : public QMainWindow
{
    Q_OBJECT

public:
    explicit v(QWidget *parent = nullptr);
    ~v();
signals:
    void vkw();



private slots:

    void on_vk_clicked();
    void on_reg_clicked();
    void slot(){
        this->vkw();
    }



private:
    Ui::v *sWindow;

    reg *sreg;



};
#endif // V_H

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    v d;
    d.vkw();


    return a.exec();
}

#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    sWindow = new v();

    connect(sWindow, &v::vkw, this, &MainWindow::show);


  }

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_vk_clicked()
{
    sWindow->show();  
    this->close();    
}



#include "reg.h"
#include "ui_reg.h"

reg::reg(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::reg)
{
    ui->setupUi(this);
}

reg::~reg()
{
    delete ui;
}
void reg::on_reg_clicked()
{
    this->close();      
    emit rgw();


}

#include "v.h"
#include "ui_v.h"


v::v(QWidget *parent) :
    QMainWindow(parent),
    sWindow(new Ui::v)
{
   sWindow->setupUi(this);
    sreg = new reg();


          connect(sreg, &reg::rgw, this, &v::vkw);
}
v::~v()
{
    delete sWindow;
}
void v::on_vk_clicked()
{
    this->close();      
    emit vkw(); 
}
void v::on_reg_clicked()
{
    sreg->vkw();  
    this->close();


}

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

5
Александр Панюшкин
  • Ақп. 11, 2019, 8:30 Т.Ж.

Антон, добрый день. Честно-честно попытался разобраться в коде - очень запутано.
Приложите, пожалуйста, исходники в виде файлов и опишите задачу. А то у вас в мэйне зачем-то сразу два окна инициализируются, причем одно из них сразу закрывается.
Не хочу критиковать ваш код раньше времени, чтобы не отбить у вас желание учиться.

    nayk1982
    • Ақп. 11, 2019, 10:05 Т.Ж.

    Первое, что заметил: У Вас все классы наследуются от QMainWindow. QMainWindow - это главное окно приложения. Попробуйте остальные окна сделать QDialog или QWidget.

      критика приветствуется по делу.
      на данный момент добавил архив со всеми файлами

      на счет следующего ккоментария у меня было сначало было QWIDGET, было тоже самое

        Александр Панюшкин
        • Ақп. 12, 2019, 3:11 Т.Ж.
        • Жауап шешім ретінде белгіленді.

        Да простит меня Евгений, я не буду выкладывать содержимое файлов - размещаю всё архивом.
        Archive.zip Archive.zip
        Как я уже писал ранее - не ясна задача и логика поведения. Я поправил всё так, как посчитал правильным с моей точки зрения.
        Основная ошибка в том, как вы пытаетесь обращаться к слотам других классов. Это не делается просто описанием их в другом классе (компилятор просто не понимает что именно вы от него хотите). Нужно привязываться к сигналам. Но, опять же, тут вопрос больше к архитектуре приложения - а действительно ли нужно все классы связывать сигналами?
        Названия переменных - пишите сразу нормальные. Эти v, vwk и прочие понять возможно только в том случае, когда у вас приложение из двух форм. Но, уверяю вас, вы сами же через 2 недели с трудом будете понимать что именно вы написали.
        Не стоит ссылаться на кнопки так, как вы это делаете - on_key_clicked(). Да, Qt позволяет такую запись, но это не очень хороший тон. В крайнем случае определите зависимость слотов и сигналов в дизайнере, а лучше через connect в конструкторе, так гораздо легче понимать код.
        Не забывайте о том, что в Qt суперская штука - наследование, которое помогает не использовать смарт птры. Без наследования у вас быстро начнутся утечки памяти.
        В общем, разбирайтесь. Мой текст не претендует на всеобъемлимость или идеальную правду - я тоже пока только учусь.

          АИ
          • Ақп. 12, 2019, 6:35 Т.Ж.

          спасибо

            Пікірлер

            Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
            Кіріңіз немесе Тіркеліңіз
            Г

            C++ - Тест 001. Первая программа и типы данных

            • Нәтиже:66ұпай,
            • Бағалау ұпайлары-1
            t

            C++ - Тест 001. Первая программа и типы данных

            • Нәтиже:33ұпай,
            • Бағалау ұпайлары-10
            t

            Qt - Тест 001. Сигналы и слоты

            • Нәтиже:52ұпай,
            • Бағалау ұпайлары-4
            Соңғы пікірлер
            G
            GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
            Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
            d
            dblas5Шілде 5, 2024, 11:02 Т.Ж.
            QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
            k
            kmssrАқп. 8, 2024, 6:43 Т.Қ.
            Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
            АК
            Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
            Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
            Енді форумда талқылаңыз
            Evgenii Legotckoi
            Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
            добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
            F
            FynjyШілде 22, 2024, 4:15 Т.Ж.
            при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
            BlinCT
            BlinCTМаусым 25, 2024, 1 Т.Ж.
            Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
            BlinCT
            BlinCTМамыр 5, 2024, 5:46 Т.Ж.
            Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
            Evgenii Legotckoi
            Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
            Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

            Бізді әлеуметтік желілерде бақылаңыз