t
tetta19 травня 2017 р. 10:59

Кнопка ОК и mdi

qt, mdi

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

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

12
Evgenii Legotckoi
  • 20 травня 2017 р. 02:19

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

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

void MainWindow::slotOkButton()
{
    // ToDo something
    mdiArea->show();
}
    t
    • 20 травня 2017 р. 03:51

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

    #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
      • 20 травня 2017 р. 05:48

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

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

      connect(okButton, &QPushButton::clicked, this, &newF::Ok);
        t
        • 20 травня 2017 р. 07:05

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

          Evgenii Legotckoi
          • 20 травня 2017 р. 23:31

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

            t
            • 21 травня 2017 р. 05:02

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

              Evgenii Legotckoi
              • 21 травня 2017 р. 05:21

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

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

                t
                • 21 травня 2017 р. 13:58

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

                  t
                  • 21 травня 2017 р. 14:23

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

                    t
                    • 21 травня 2017 р. 14:56

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

                      t
                      • 21 травня 2017 р. 14:58

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

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

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

                          Коментарі

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

                          C++ - Тест 004. Указатели, Массивы и Циклы

                          • Результат:50бали,
                          • Рейтинг балів-4
                          m
                          • molni99
                          • 26 жовтня 2024 р. 01:37

                          C++ - Тест 004. Указатели, Массивы и Циклы

                          • Результат:80бали,
                          • Рейтинг балів4
                          m
                          • molni99
                          • 26 жовтня 2024 р. 01:29

                          C++ - Тест 004. Указатели, Массивы и Циклы

                          • Результат:20бали,
                          • Рейтинг балів-10
                          Останні коментарі
                          ИМ
                          Игорь Максимов22 листопада 2024 р. 11:51
                          Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                          Evgenii Legotckoi
                          Evgenii Legotckoi31 жовтня 2024 р. 14:37
                          Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                          A
                          ALO1ZE19 жовтня 2024 р. 08:19
                          Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                          ИМ
                          Игорь Максимов05 жовтня 2024 р. 07:51
                          Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                          d
                          dblas505 липня 2024 р. 11:02
                          QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                          Тепер обговоріть на форумі
                          Evgenii Legotckoi
                          Evgenii Legotckoi24 червня 2024 р. 15:11
                          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                          t
                          tonypeachey115 листопада 2024 р. 06:04
                          google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                          NSProject
                          NSProject04 червня 2022 р. 03:49
                          Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                          9
                          9Anonim25 жовтня 2024 р. 09:10
                          Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                          Слідкуйте за нами в соціальних мережах