АИ
Антон Ильинский11 февраля 2019 г. 19: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 г. 19:30

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

    nayk1982
    • 11 февраля 2019 г. 21:05

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

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

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

        Александр Панюшкин
        • 12 февраля 2019 г. 14:11
        • Ответ был помечен как решение.

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

          АИ
          • 12 февраля 2019 г. 17:35

          спасибо

            Комментарии

            Только авторизованные пользователи могут публиковать комментарии.
            Пожалуйста, авторизуйтесь или зарегистрируйтесь
            Ua

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

            • Результат:84баллов,
            • Очки рейтинга4
            Ua

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

            • Результат:42баллов,
            • Очки рейтинга-8
            ОК

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

            • Результат:47баллов,
            • Очки рейтинга-6
            Последние комментарии
            ИМ
            Игорь Максимов22 ноября 2024 г. 21:51
            Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
            Evgenii Legotckoi
            Evgenii Legotckoi31 октября 2024 г. 23:37
            Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
            A
            ALO1ZE19 октября 2024 г. 17:19
            Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
            ИМ
            Игорь Максимов5 октября 2024 г. 16:51
            Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
            d
            dblas55 июля 2024 г. 20:02
            QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
            Сейчас обсуждают на форуме
            f
            firstlunoxod15 февраля 2025 г. 13:46
            Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
            Дмитрий
            Дмитрий3 февраля 2025 г. 16:24
            Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
            NW
            Nayo Wai30 января 2025 г. 19:22
            не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
            n
            nkly3 января 2025 г. 12:52
            Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
            M
            Marsel17 августа 2023 г. 0:26
            OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

            Следите за нами в социальных сетях