АИ
Feb. 11, 2019, 1:18 p.m.

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

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

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

вот сама программа 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();


}

Virtual hosting with 10 percent discount
Virtual hosting with 10 percent discount
EVILEG offers reliable hosting with a 10% discount for virtual hosting and 5% for VPS
5

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

0

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

0
АИ

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

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

0

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

1
АИ

спасибо

1

Comments

Only authorized users can post comments.
Please, Log in or Sign up
TT
June 13, 2019, 7:01 p.m.
Taimoor Tanweer

C++ - Test 001. The first program and data types

  • Result:66points,
  • Rating points-1
TT
June 13, 2019, 6:51 p.m.
Taimoor Tanweer

C++ - Test 002. Constants

  • Result:75points,
  • Rating points2
ВМ
June 13, 2019, 12:30 p.m.
Ваня Мороз

C++ - Test 001. The first program and data types

  • Result:100points,
  • Rating points10
Last comments
i
June 17, 2019, 6:10 a.m.
ingenfly

Только по осям xAxis2, уAxis2 значения начинаются с 0. Почему-то xAxis2 и xAxis не синхронизированы по данным. Ну и QCustomPlot последний.
June 16, 2019, 8:21 p.m.
Евгений Легоцкой

Добрый день. Ну точно также добавляете ту же самую информацию на ось xAxis2, только добавляете другое форматирование customPlot->xAxis2->setDateTimeFormat("hh:mm"); если я ...
EF
June 14, 2019, 1:56 p.m.
Egor Fomin

Спасибо за ваш ответ, у меня получилось реализовать это. Тем не менее появилась другая проблема, поэтому опять надеюсь на вашу помощь. Скажем, я уже выставил точки и они соеденены. Когда я нач...
d
June 13, 2019, 2:47 p.m.
damix

Можно классу, который описывает точку, добавить сигнал, который подавать (emit), когда точка перемещается (переопределить mouseMoveEvent или mouseReleaseEvent). Так вот эти сигналы у каждой из...
i
June 13, 2019, 2:09 p.m.
ingenfly

Здравствайте! Подскажите, пожалуйста: customPlot->xAxis2->setTickLabels(true); //Здесь включается отображение данных на оси xAxis2. а можно как-то продублировать информацию cus...
Now discuss on the forum
June 20, 2019, 9:30 a.m.
IscanderChe

Вернулся к этой задачке только-только, поэтому и не ответил ничего раньше.Как переопределить mouseReleaseEvent(QMouseEvent* event) у QTableView, если QTableView задан в ui? Или задавать QTabl...
I
June 19, 2019, 1:41 p.m.
Intruder

Всем добрый день. При разборе XML файла наткнулся на тег вот такого плана: <TagName attribute1="value1" attribute2="value2" /> При попытке проверить на наличие такого элеме...
June 19, 2019, 12:55 p.m.
Михаиллл

Скажите пожалуйста, как его в таком случае перемещать и удалять?
June 18, 2019, 7:50 p.m.
Дмитрий

Большое спасибо! SDK заработал.К сожалению удалось продвинутся только на один шаг. При сборке чистого проекта NDK выдаёт следующие ошибки C:\Android\ndk-bundle/toolchains/arm-linux-andr...
June 18, 2019, 4:59 p.m.
Михаиллл

Добрый день.В этом учебнике представлен код INSTALLED_APPS = ( ... 'rest_framework', 'snippets.apps.SnippetsConfig',) На строчке 'snippets.apps.SnippetsConf...
Looking for a Job?
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

For registered users on the site there is a minimum amount of advertising

EVILEG
About
Services
Join us
© EVILEG 2015-2019
Recommend hosting TIMEWEB