Вопрос C++ Qt окна

Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
267
Реакции[?]
22
Поинты[?]
7K
короче, я делаю приложение, типо там с кнопочками далее, назад, и при нажатии этих кнопочек у меня скрывается текущее окно, открывается дочернее или родительское окно и вызывается деструктор текущего окна. и тут у меня такая проблема: в панели задач показывается только самое первое окно, которое у меня в main'е создается. я хочу сделать, чтобы все дочерние окна отображались в панели задач. я уже и так делал:
C++:
void WelcomeWindow::on_CreateANewList_clicked()
{
    hide();
    CreatingOrderWindow1* window = new CreatingOrderWindow1(this, this->width(), this->height());
    window->setWindowFlags(Qt::Window | Qt::Tool | Qt::WindowSystemMenuHint);
    window->show();
}
и не помогло
 
Последнее редактирование:
SummerLOVE
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2022
Сообщения
384
Реакции[?]
64
Поинты[?]
29K
C++:
window->setWindowFlags(Qt::Window | Qt::Tool | Qt::WindowSystemMenuHint);
 
Начинающий
Статус
Оффлайн
Регистрация
9 Сен 2020
Сообщения
324
Реакции[?]
18
Поинты[?]
2K
ты уже спрашивал у chatgpt?
void WelcomeWindow::on_CreateANewList_clicked()
{
hide();
CreatingOrderWindow1* window = new CreatingOrderWindow1(nullptr, this->width(), this->height());
window->setWindowFlags(Qt::Window | Qt::WindowSystemMenuHint);
window->show();
}
попробуй
 
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
267
Реакции[?]
22
Поинты[?]
7K
ты уже спрашивал у chatgpt?

void WelcomeWindow::on_CreateANewList_clicked()
{
hide();
CreatingOrderWindow1* window = new CreatingOrderWindow1(nullptr, this->width(), this->height());
window->setWindowFlags(Qt::Window | Qt::WindowSystemMenuHint);
window->show();
}
попробуй
ну оно скорее всего будет работать, но мне нужен родительский класс!!!!, потому что:
C++:
void CreatingOrderWindow1::on_Back_clicked()
{
    hide();
    this->parent->show();
    this->~CreatingOrderWindow1();
}
 
Начинающий
Статус
Оффлайн
Регистрация
9 Сен 2020
Сообщения
324
Реакции[?]
18
Поинты[?]
2K
ну оно скорее всего будет работать, но мне нужен родительский класс!!!!, потому что:
C++:
void CreatingOrderWindow1::on_Back_clicked()
{
    hide();
    this->parent->show();
    this->~CreatingOrderWindow1();
}
по типу?

void WelcomeWindow::on_CreateANewList_clicked()
{
hide();
CreatingOrderWindow1* window = new CreatingOrderWindow1(nullptr, this->width(), this->height());
window->setWindowFlags(Qt::Window | Qt::WindowSystemMenuHint);
window->show();
}

void CreatingOrderWindow1::on_Back_clicked()
{
hide();
if (this->parent()) {
this->parent()->show();
}
delete this;
}
 
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
267
Реакции[?]
22
Поинты[?]
7K
по типу?

void WelcomeWindow::on_CreateANewList_clicked()
{
hide();
CreatingOrderWindow1* window = new CreatingOrderWindow1(nullptr, this->width(), this->height());
window->setWindowFlags(Qt::Window | Qt::WindowSystemMenuHint);
window->show();
}

void CreatingOrderWindow1::on_Back_clicked()
{
hide();
if (this->parent()) {
this->parent()->show();
}
delete this;
}
ну возможно, но тут ты метод parent() используешь, а в качестве parent'а ты nullptr передаешь, оно же не сработает
 
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
267
Реакции[?]
22
Поинты[?]
7K
проблема решена.
C++:
void setAppWindowFlag(QWidget *window) {

    HWND hwnd = reinterpret_cast<HWND>(window->winId());
    LONG exStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
    LONG style = GetWindowLong(hwnd, GWL_STYLE);

    style |= WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_OVERLAPPEDWINDOW;
    exStyle |= WS_EX_APPWINDOW;
    exStyle &= ~WS_EX_TOOLWINDOW;

    SetWindowLong(hwnd, GWL_EXSTYLE, exStyle);
    SetWindowLong(hwnd, GWL_STYLE, style);
    SetWindowPos(hwnd, nullptr, 0, 0, 0, 0,
                 SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}

C++:
void WelcomeWindow::on_CreateANewOrder_clicked()
{
    hide();
    CreatingOrderWindow2* window = new CreatingOrderWindow2(this);
    window->setWindowFlags(Qt::Window | Qt::Tool);
    window->show();
    setAppWindowFlag(window);
}
 
Сверху Снизу