помогите, ни как не полчается отккрыть третие окно
пока новичок, и только начинаю рабираться, уже раньше поставил и слоты менял и все равно третие окно не хочет открывать, просто вылетает при нажатию авторизация и все.
нужно сделать следуюие открывается первое окно там только одна кнопка, нажимаем открывается второе с вводом логином и паролем, и здесь уже при нажатие на авторизацию должно открыться третие оккно с друззьями пользователя, которое как раз и не открывается
вот сама программа
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, ®::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();
- }
Do you like it? Share on social networks!
- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
- Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Антон, добрый день. Честно-честно попытался разобраться в коде - очень запутано.
Приложите, пожалуйста, исходники в виде файлов и опишите задачу. А то у вас в мэйне зачем-то сразу два окна инициализируются, причем одно из них сразу закрывается.
Не хочу критиковать ваш код раньше времени, чтобы не отбить у вас желание учиться.
Первое, что заметил: У Вас все классы наследуются от QMainWindow. QMainWindow - это главное окно приложения. Попробуйте остальные окна сделать QDialog или QWidget.
критика приветствуется по делу.
на данный момент добавил архив со всеми файлами
на счет следующего ккоментария у меня было сначало было QWIDGET, было тоже самое
Да простит меня Евгений, я не буду выкладывать содержимое файлов - размещаю всё архивом.
Archive.zip
Как я уже писал ранее - не ясна задача и логика поведения. Я поправил всё так, как посчитал правильным с моей точки зрения.
Основная ошибка в том, как вы пытаетесь обращаться к слотам других классов. Это не делается просто описанием их в другом классе (компилятор просто не понимает что именно вы от него хотите). Нужно привязываться к сигналам. Но, опять же, тут вопрос больше к архитектуре приложения - а действительно ли нужно все классы связывать сигналами?
Названия переменных - пишите сразу нормальные. Эти v, vwk и прочие понять возможно только в том случае, когда у вас приложение из двух форм. Но, уверяю вас, вы сами же через 2 недели с трудом будете понимать что именно вы написали.
Не стоит ссылаться на кнопки так, как вы это делаете - on_key_clicked(). Да, Qt позволяет такую запись, но это не очень хороший тон. В крайнем случае определите зависимость слотов и сигналов в дизайнере, а лучше через connect в конструкторе, так гораздо легче понимать код.
Не забывайте о том, что в Qt суперская штука - наследование, которое помогает не использовать смарт птры. Без наследования у вас быстро начнутся утечки памяти.
В общем, разбирайтесь. Мой текст не претендует на всеобъемлимость или идеальную правду - я тоже пока только учусь.
спасибо