Вопрос Qt окна

Dancin' in September
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
431
Реакции
44
короче, я делаю приложение, типо там с кнопочками далее, назад, и при нажатии этих кнопочек у меня скрывается текущее окно, открывается дочернее или родительское окно и вызывается деструктор текущего окна. и тут у меня такая проблема: в панели задач показывается только самое первое окно, которое у меня в main'е создается. я хочу сделать, чтобы все дочерние окна отображались в панели задач. я уже и так делал:
C++:
Expand Collapse Copy
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();
}
и не помогло
 
Последнее редактирование:
C++:
Expand Collapse Copy
window->setWindowFlags(Qt::Window | Qt::Tool | Qt::WindowSystemMenuHint);
 
помогите блят
 
ты уже спрашивал у chatgpt?
void WelcomeWindow::on_CreateANewList_clicked()
{
hide();
CreatingOrderWindow1* window = new CreatingOrderWindow1(nullptr, this->width(), this->height());
window->setWindowFlags(Qt::Window | Qt::WindowSystemMenuHint);
window->show();
}
попробуй
 
ты уже спрашивал у 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++:
Expand Collapse Copy
void CreatingOrderWindow1::on_Back_clicked()
{
    hide();
    this->parent->show();
    this->~CreatingOrderWindow1();
}
 
ну оно скорее всего будет работать, но мне нужен родительский класс!!!!, потому что:
C++:
Expand Collapse Copy
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;
}
 
по типу?

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 передаешь, оно же не сработает
 
проблема решена.
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
void WelcomeWindow::on_CreateANewOrder_clicked()
{
    hide();
    CreatingOrderWindow2* window = new CreatingOrderWindow2(this);
    window->setWindowFlags(Qt::Window | Qt::Tool);
    window->show();
    setAppWindowFlag(window);
}
 
Назад
Сверху Снизу