Qt编译QPushButton不通过,提示未定义或者定义不全

Qt编译不通过,已经包含了头文件的,也定义了,提示QpushButton未定义或者定义不全,请求帮忙看看什么问题?

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7651822
  • 这篇博客也不错, 你可以看下Qt多个QPushButton绑定同一个槽函数
  • 您还可以看一下 曾志坤老师的Qt语言从入门到精通课程中的 控件编码 - 按钮PushButton小节, 巩固相关知识点
  • 除此之外, 这篇博客: Qt 自定义MoveButton移动按钮中的 Qt 自定义MoveButton移动按钮 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    之前使用了painter自绘制按钮进行拖拽移动。

    在这里,MoveButton继承QPushbutton,实现鼠标移动拖拽,键盘上下键位移。

    头文件MoveButton.h

    #ifndef MOVEBUTTON_H
    #define MOVEBUTTON_H
    
    /***********************************************************
     *版权声明:Copyright (c) 2019 Kongdemin. All rights reserved.
     *许可版本:Corporation & Enterprise
     *文件名称:MoveButton.h
     *文件功能:can move button
     *创建作者:kongdemin
     *修改时间:2019-08
     *修订说明:版本 01
    ************************************************************/
    
    #include <QPushButton>
    #include <QWidget>
    
    class MoveButton : public QPushButton
    {
        Q_OBJECT
    public:
        explicit MoveButton(QWidget *parent = nullptr);
    
    signals:
    
    public slots:
    
    protected:
        ///
        /// \brief mousePressEvent
        /// \param event
        ///
        void mousePressEvent(QMouseEvent *event);
        ///
        /// \brief mouseMoveEvent
        /// \param event
        ///
        void mouseMoveEvent(QMouseEvent *event);
        ///
        /// \brief keyPressEvent
        /// \param event
        ///
        void keyPressEvent(QKeyEvent *event);
    private:
        ///
        /// \brief _beginPos
        ///
        QPoint _beginPos;
        ///
        /// \brief _lastPos
        ///
        QPoint _lastPos;
    };
    
    #endif // MOVEBUTTON_H

    源文件MoveButton.cpp

    #include "MoveButton.h"
    #include <QMouseEvent>
    
    MoveButton::MoveButton(QWidget *parent) : QPushButton(parent)
    {
        this->setStyleSheet("background-color: rgb(218,165,32); border: 1px");
    }
    
    void MoveButton::mousePressEvent(QMouseEvent *event)
    {
        if(event->button() == Qt::LeftButton)
        {
            _beginPos = event->pos();
        }
    }
    
    void MoveButton::mouseMoveEvent(QMouseEvent *event)
    {
        _lastPos = event->pos();
    
        int t_xDistance = _lastPos.x() - _beginPos.x();
        int t_yDistance = _lastPos.y() - _beginPos.y();
        if((this->x()+t_xDistance<=parentWidget()->width()-this->width())
                && (this->y()+t_yDistance<=parentWidget()->height()-this->height())
                && this->x()+t_xDistance>=0
                && this->y()+t_yDistance>=0)
        {
            this->move(this->x()+t_xDistance,this->y()+t_yDistance);
        }
    }
    void MoveButton::keyPressEvent(QKeyEvent *event)
    {
        if(event->key() == Qt::Key_Left)
        {
            if(this->x()-4>=0)
            {
                this->move(this->x()-4,this->y());
            }
        }
        else if(event->key() == Qt::Key_Right)
        {
            if(parentWidget()->width()-this->width()-this->x()-4>=0)
            {
                this->move(this->x()+4,this->y());
            }
        }
        else if(event->key() == Qt::Key_Up)
        {
            if(this->y()-4>=0)
            {
                this->move(this->x(),this->y()-4);
            }
        }
        else if(event->key() == Qt::Key_Down)
        {
            if(parentWidget()->height()-this->height()-this->y()-4>=0)
            {
                this->move(this->x(),this->y()+4);
            }
        }
    }

    效果:

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^