Реклама
  • 19 мая 2017 г. 20:59

Кнопка ОК и mdi

qt, mdi

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

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

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

void MainWindow::slotOkButton()
{
    // ToDo something
    mdiArea->show();
}

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

#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, но и ошибок не выдает

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

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

connect(okButton, &QPushButton::clicked, this, &newF::Ok);

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

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

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

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

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

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

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

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

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

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

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

Реклама

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
Последние пройденные тестирования
  • namat
  • 22 июня 2017 г. 5:27

C++ - Тест 002. Константы

Результат - 91 баллов

  • namat
  • 22 июня 2017 г. 5:22

C++ - Тест 001. Первая программа и типы данных

Результат - 100 баллов

C++ - Тест 001. Первая программа и типы данных

Результат - 80 баллов

Последние комментарии
  • EVILEG
  • 16 июня 2017 г. 12:15

Qt/C++ - Урок 023. Перетаскивание QGraphicsItem на QGraphicsScene мышью

Не, не совсем так. Здесь нужно будет учитывать сдвиг позиции курсора относительно координаты (0, 0) в координатной системе MoveItem. Получается тогда так: Координаты сдвиг...

  • damix
  • 15 июня 2017 г. 21:39

Qt/C++ - Урок 023. Перетаскивание QGraphicsItem на QGraphicsScene мышью

Лучше где-то в классе MoveItem объявить QPointF mouseCoords; А потом void MoveItem::mousePressEvent(QGraphicsSceneMouseEvent *event){ mouseCoords = event->pos();}void...

  • EVILEG
  • 15 июня 2017 г. 13:27

QML - Урок 007. ListView Qml. Динамическое создание и удаление элементов

Не хотелось бы повторяться. В статье по сигналам и слотам в QML есть вариант использования C++ объекта. Там используется тип Connections , который можно настроить на сигн...

Сейчас обсуждают на форуме

QEvent. Переопределение метода event().

EVILEG, благодарю, что все разъяснили. ;)

  • EVILEG
  • 17 июня 2017 г. 13:13

QWizard

Думаю, что это возможно. У QWizard есть метод setButtonLayout , который устанавливает, какие именно кнопки могут быть видны на страницах. Так вот, у QWizardPa...

  • DrGen
  • 15 июня 2017 г. 17:10

Ключи QMultiMap в роли кнопок

Большое спасибо! даже не думал, что вопрос окажется интересным.

Вопрос по QTableWidget ?

Спасибо )