老赵的博客 2021-11-23 14:06 采纳率: 20%
浏览 31

继承自QPushButton的子类提示说虚函数未定义



```#include "mainwindow.h"
#include <QApplication>
#include<QtWidgets>
#include<iostream>
using namespace std;

class B:public QPushButton
{
    Q_OBJECT
public: B(QString s="",QWidget *p=0):QPushButton(s,p){}
    ~B(){}
public slots:
    void  f(){cout<<"F"<<endl;}
    void g(){ cout<<"G"<<endl;}
    void h(){ cout<<"H"<<endl;}
    void j(){ cout<<"J"<<endl;}
    void k(){ cout<<"K"<<endl;}
};

int main(int argc, char *argv[])
{
    QApplication a(argc,argv);

    //创建部件
    QDialog w; //默认按钮只在对话框中有效。读者可使用 QWidget 进行验证。
    B *pb1=new B("AAA",&w); B *pb2=new B("BBB",&w); B *pb3=new B("CCC",&w);
    B *pb4=new B("DDD",&w); B *pb5=new B("EEE",&w);
    QCheckBox *pb6=new QCheckBox("XXX",&w);
    pb2->setDefault(true); //设置 pb2 为默认按钮。
    pb3->setAutoDefault(0); //取消 pb3 的自动默认按钮属性
    pb4->setFlat(true); //设置 pb4 的 flat 属性为 true。
    // pb5->setAutoDefault(0); //错误 pb5 不是 QPushButton,不能设置自动默认按钮
    cout<<pb1->autoDefault()<<endl; //输出 1。对话框中的按钮默认具有自动默认按钮属性
    cout<<pb1->isDefault()<<endl; //输出 0。
    //布局各部件
    pb1->move(22,22); pb2->move(99,22); pb3->move(177,22);
    pb4->move(22,77); pb5->move(99,77);pb6->move(177,77);
    //验证默认按钮和自动默认按钮,需要使用信号和槽机制。
    QObject::connect(pb1,&QPushButton::clicked,pb1,&B::f);
    QObject::connect(pb2,&QPushButton::clicked,pb2,&B::g);
    QObject::connect(pb3,&QPushButton::clicked,pb3,&B::h);
    QObject::connect(pb4,&QPushButton::clicked,pb4,&B::j);
    QObject::connect(pb5,&QPushButton::clicked,pb5,&B::k);
    w.resize(300,200); w.show();
    return a.exec();
}



```

  • 写回答

3条回答 默认 最新

  • 老赵的博客 2021-11-23 14:07
    关注

    error: undefined reference to `vtable for B'

    评论

报告相同问题?

问题事件

  • 创建了问题 11月23日

悬赏问题

  • ¥15 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序