t
tettaMay 19, 2017, 10:59 a.m.

Кнопка ОК и mdi

qt, mdi

Как сделать так, что бы при нажатие на кнопку "ОК", открывался mdiarea ?

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

12
Evgenii Legotckoi
  • May 20, 2017, 2:19 a.m.

Ну. у кнопки есть сигнал clicked, подключаете слот к этом сигналу, а в слоте реализуете требуемую логику по открытию MdiArea. Например так.

connect(okButton, &QPushButton::clicked, this, &MainWindow::slotOkButton);

void MainWindow::slotOkButton()
{
    // ToDo something
    mdiArea->show();
}
    t
    • May 20, 2017, 3:51 a.m.

    Первый файл реализации:

    #include "mainarea.h"
    #include "ui_mainarea.h"
    
    #include <QMdiArea>
    
    MainArea::MainArea(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::MainArea)
    {
        ui->setupUi(this);
    
        mdimain = new QMdiArea(this);
        mdimain->show();
    }
    
    MainArea::~MainArea()
    {
        delete ui;
    }
    
    А вот тут я испльзую его:
    void newF::Ok(){
        MainArea *mainarea;
        mainarea->show();
    }
    
    Я вот что-то подобное сделал, но у меня не открывается mdi, но и ошибок не выдает
      Evgenii Legotckoi
      • May 20, 2017, 5:48 a.m.

      Для начала, не вижу в вашем коде подключения этого слота к сигналу клика по кнопке Ок.

      Например, что-нибудь типо такого:

      connect(okButton, &QPushButton::clicked, this, &newF::Ok);
        t
        • May 20, 2017, 7:05 a.m.

        У меня есть диалог и он прописан в другом файле и когда я его открываю в программе, он выходит как другое окно. Мне бы хотелось, что бы диалог был в окне, которое его вызвало!

          Evgenii Legotckoi
          • May 20, 2017, 11:31 p.m.

          Не выйдет. Во всяком случае с классом, наследованным от QDialog. Если он наследован от QWidget, то может быть. Но здесь нужно поместить этот диалог в окно, как обычный виджет. И сделать абсолютное позиционирование внутри окна. Но в данном случае пропадёт обрамление у этого виджета. То есть заголовок, кнопки закрытия и сворачивания.

            t
            • May 21, 2017, 5:02 a.m.

            У меня наследован от виджета, напишите как это сделать. Все равно если пропадет обрамление, его уже нету и так.(я убрал)

              Evgenii Legotckoi
              • May 21, 2017, 5:21 a.m.

              Допустим есть окно приложения, в которое нужно поместить ещё один виджет. Тогда код будет такой:

              // Создаём виджет и в качестве parent указываем тот класс, то окно, 
              // внутри которого должен располагаться виджет (аргумент this)
              QWidget* inWidget = new QWidget(this);
              // А далее делаем абсолютное позиционирование
              // в данном случае задаются координаты внутри парента нашего виджета
              inWidget->setGeometry(50, 50, 200, 150);
              // Style Sheet я задал, чтобы выделить цветом виджет внутри окна
              // Скриншот во вложении, как это будет выглядеть.
              inWidget->setStyleSheet("QWidget { background-color: red; }");
              inWidget->show();

                t
                • May 21, 2017, 1:58 p.m.

                А еще, вот как сделать так: диалог открыт и я зади ничего не могу нажать, но когда я нажимаю, само окно мигает, типа сигнал того, что я ничего не могу делать, так как открыт диалог?

                  t
                  • May 21, 2017, 2:23 p.m.

                  И еще. Как сделать так, что когда уже создано диалог, то я не могу еще создать, пока не закрою этот? (простите, что так много )

                    t
                    • May 21, 2017, 2:56 p.m.

                    Я смог отрыть mdi, но только он открывается место диалога. А мне надо, что бы он открывался в программе!

                      t
                      • May 21, 2017, 2:58 p.m.

                      И как в диалоге сделать ограничение по символам?

                        Evgenii Legotckoi
                        • May 23, 2017, 1:58 a.m.
                        Я смог отрыть mdi, но только он открывается место диалога. А мне надо, что бы он открывался в программе!

                        Слушайте, Вы серьёзно полагаете, что можно предложить определённое решение не видя того, что вы там понаписали в своём коде? Тем более, неизвестно, что творится в вашей голове, когда вы говорите, что открываете mdi вместо диалога, который ещё и неизвестно от чего наследован и как реализован, и как реализовано открытие этого диалога или mdi. У вас вопросы по локальной ситуативной реализации в вашем конкретном случае. Другим за Вас додумывать, как Вы уже написали свою программу?

                          Comments

                          Only authorized users can post comments.
                          Please, Log in or Sign up
                          АА

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

                          • Result:60points,
                          • Rating points-1
                          Г

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

                          • Result:66points,
                          • Rating points-1
                          t

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

                          • Result:33points,
                          • Rating points-10
                          Last comments
                          d
                          dblas5July 5, 2024, 9:02 p.m.
                          QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                          k
                          kmssrFeb. 9, 2024, 5:43 a.m.
                          Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                          Qt WinAPI - Lesson 007. Working with ICMP Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                          EVA
                          EVADec. 25, 2023, 9:30 p.m.
                          Boost - static linking in CMake project under Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                          J
                          JonnyJoDec. 25, 2023, 7:38 p.m.
                          Boost - static linking in CMake project under Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                          Now discuss on the forum
                          КГ
                          Кирилл ГусаревSept. 27, 2024, 7:09 p.m.
                          Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                          ИМ
                          Игорь МаксимовSept. 27, 2024, 1:35 a.m.
                          Реализация навигации по разделам Доброго времени суток. Как правильно называется эта система навигации? Хочу себе такую же, и не знаю как гуглу вопрос задать.
                          Evgenii Legotckoi
                          Evgenii LegotckoiJune 25, 2024, 1:11 a.m.
                          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                          F
                          FynjyJuly 22, 2024, 2:15 p.m.
                          при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
                          BlinCT
                          BlinCTJune 25, 2024, 11 a.m.
                          Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…

                          Follow us in social networks