KM
2 октября 2020 г. 16:52
2

Вам это нравится? Поделитесь в социальных сетях!

4
Evgenii Legotckoi
  • 2 октября 2020 г. 17:01
  • Ответ был помечен как решение.

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

Почитайте о QPropertyAnimation

    KM
    • 2 октября 2020 г. 18:09

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

      KM
      • 6 октября 2020 г. 11:48

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

      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
        • 8 октября 2020 г. 3:34

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

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

          Комментарии

          Только авторизованные пользователи могут публиковать комментарии.
          Пожалуйста, авторизуйтесь или зарегистрируйтесь