为什么无法为“maximumWidth”设置动画? QWidget的参数?

发布于 2024-09-11 00:53:33 字数 642 浏览 5 评论 0原文

可能的重复:
Qt - QPropertyAnimation 中存在错误?

我想为QWidget MaximumWidth 是为了通过动画更改布局中的 thd 小部件大小,但它不起作用。我尝试执行以下操作:

QPropertyAnimation *animation1 = new QPropertyAnimation(m_textEditor2, "maximumWidth");
animation1->setStartValue(0);
animation1->setEndValue(100);
animation1->start();

编辑:对于minimumWidth 属性,动画可以工作,但对于maximumWidth - 不行。因此,我在他们的错误报告网站上打开了一个错误:此处

Possible Duplicate:
Qt - There is a bug in QPropertyAnimation?

I wanted to animate the QWidget maximumWidth in order to change thd widgets size in a layout with animation, but it does not work. I have tried to do the following:

QPropertyAnimation *animation1 = new QPropertyAnimation(m_textEditor2, "maximumWidth");
animation1->setStartValue(0);
animation1->setEndValue(100);
animation1->start();

EDIT: For minimumWidth property the animation works, but for maximumWidth - no. Thus I have opened a bug on their bugreport site: here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

抚你发端 2024-09-18 00:53:33

您的问题是,maximumWidth 不是一个非常适合用于动画的属性,因为它不会直接转换为 Widget 的实际大小。你最好使用geometry,这样效果更好;例如,它为 QTextEdit 制作动画:

class QtTest : public QMainWindow
{
    Q_OBJECT
    public:
        QtTest()
        {
            m_textEdit = new QTextEdit(this);
        };

    protected:
        QTextEdit *m_textEdit;

        virtual void showEvent ( QShowEvent * event )
        {
            QWidget::showEvent(event);

            QPropertyAnimation *animation = new QPropertyAnimation(m_textEdit, "geometry");
            animation->setDuration(10000);
            animation->setStartValue(QRect(0, 0, 100, 30));
            animation->setEndValue(QRect(0, 0, 500, 30));

            animation->start();
        }
};

Your problem is just that maximumWidth isn't a very good property to use for animation, since it doesn't directly translate to the Widget's actual size. You better use geometry which gives a better effect; like this for example, it animates a QTextEdit:

class QtTest : public QMainWindow
{
    Q_OBJECT
    public:
        QtTest()
        {
            m_textEdit = new QTextEdit(this);
        };

    protected:
        QTextEdit *m_textEdit;

        virtual void showEvent ( QShowEvent * event )
        {
            QWidget::showEvent(event);

            QPropertyAnimation *animation = new QPropertyAnimation(m_textEdit, "geometry");
            animation->setDuration(10000);
            animation->setStartValue(QRect(0, 0, 100, 30));
            animation->setEndValue(QRect(0, 0, 500, 30));

            animation->start();
        }
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文