KM
Oct. 2, 2020, 4:52 p.m.

Dialog animation C++ Qt

qt, Dialog, animation, c++

подскажите как красиво сделать появление диалога
C++

2

Do you like it? Share on social networks!

4
Evgenii Legotckoi
  • Oct. 2, 2020, 5:01 p.m.
  • The answer was marked as a solution.

Зависит от того, что вы хотите анимировать.
В Qt можно привязать плавное изменение параметров, которые объявлены как property, то есть помечены макросом Q_PROPERTY в классах, наследованных от QObject. В том числе и QDialog.

Почитайте о QPropertyAnimation

    KM
    • Oct. 2, 2020, 6:09 p.m.

    Можно пример для диалога?

      KM
      • Oct. 6, 2020, 11:48 a.m.

      Вот мой диплог срр

      1. #include "configdialog.h"
      2. #include "ui_configdialog.h"
      3. #include <QMessageBox>
      4.  
      5. ConfigDialog::ConfigDialog(PinPoint *_point, Connection *_connection, QWidget *parent):
      6. QDialog(parent),
      7. point(_point),
      8. connection(_connection),
      9. ui(new Ui::ConfigDialog)
      10. {
      11. ui->setupUi(this);
      12. setViewSizeByMapWidget();
      13. ui->nameEdit->setText(point->getText());
      14. Global::authorization->addInterface(this);
      15. AuthorizationInterface::addOnLogIn({ui->label_2, ui->deleteButton, ui->nameEdit});
      16. setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
      17. this->setObjectName("configdialog");
      18. }
      19.  
      20. ConfigDialog::~ConfigDialog()
      21. {
      22. Global::authorization->removeInterface(this);
      23. if(!forceDeleted) {
      24. ui->connectionLayout->removeWidget(connection);
      25. connection->setParent(nullptr);
      26. }
      27. delete ui;
      28. }
      29.  
      30. void ConfigDialog::setViewSizeByMapWidget() { //set size in addition to selected map widget, so conteners are smaller
      31. if(connection->getMapWidget().getBackgroundId()<=settings.contenersCount.get())
      32. this->setMinimumSize(1100,700);
      33. else
      34. this->setMinimumSize(1600,1000);
      35. }
      36.  
      37. void ConfigDialog::showEvent(QShowEvent *event)
      38. {
      39. ui->connectionLayout->addWidget(connection);
      40. QDialog::showEvent(event);
      41. }
      42.  
      43. void ConfigDialog::on_deleteButton_clicked()
      44. {
      45. ui->connectionLayout->removeWidget(connection);
      46. connection->setParent(nullptr);
      47. forceDeleted = true;
      48. emit(point->removeMe(point));
      49. this->close();
      50. }
      51.  
      52. void ConfigDialog::on_buttonBox_accepted()
      53. {
      54. point->setName(ui->nameEdit->text());
      55. connection->updateDataFromGUI();
      56. emit(point->updateDatabase(*point));
      57. }
      58.  
      59. void ConfigDialog::on_ToCopy_clicked()
      60. {
      61.  
      62. ui->connectionLayout->addWidget(connection);
      63. emit(point->addMe(point));
      64. //this->close();
      65.  
      66.  
      67. }
      68.  
      69.  

      хотелось бы как на макбуке красиво открывать и закрывать диалог если нужно

        Evgenii Legotckoi
        • Oct. 8, 2020, 3:34 a.m.

        Посмотрите, пожалуйста, этот пример Qt/C++ - Урок 042. PopUp уведомление в стиле Gnome с помощью Qt

        Там есть анимация всплывающего сообщения. Нечто подобное может быть применено и у вас. У меня сейчас физически не хватает времени, чтобы подробно вникать в ваш вопрос.

          Comments

          Only authorized users can post comments.
          Please, Log in or Sign up
          • Last comments
          • AK
            April 1, 2025, 11:41 a.m.
            Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
          • Evgenii Legotckoi
            March 9, 2025, 9:02 p.m.
            К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
          • VP
            March 9, 2025, 4:14 p.m.
            Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
          • ИМ
            Nov. 22, 2024, 9:51 p.m.
            Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          • Evgenii Legotckoi
            Oct. 31, 2024, 11:37 p.m.
            Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup