使用Qt和C ++没有插槽但QMetaObject :: connectSlotsByName错误

时间:2015-04-23 08:00:18

标签: c++ qt qt-signals qmetaobject

我正在用C ++和Qt Creator编程,我的代码完美无缺。不过我遇到的问题是,当我编译代码时会收到警告。

QMetaObject::connectSlotsByName: No matching signal for on_but_PrintTab_clicked()

曾经有一个名为 on_but_PrintTab_clicked()的广告位,但它已不复存在。我怎样才能摆脱这个警告?

3 个答案:

答案 0 :(得分:1)

您的通话中某处有connect()来电,正在尝试连接on_but_PrintTab_clicked。只需搜索" on_but_PrintTab_clicked"并删除此connect()来电。

答案 1 :(得分:1)

Qt autoconnect mechanism尝试将信号连接到对象的插槽,形式为:

describe('when it succeeds', () => {
  var sandbox, server, Instance;
  beforeEach(() => {
    sandbox = sinon.sandbox.create();
    sandbox.useFakeServer();
    server = sandbox.server;
    server.respondWith([200, { "Content-Type": "application/json" }, JSON.stringify({ data: { token: '' }})]);
    sandbox.spy(AuthActions, 'login');
    Instance = TestUtils.renderIntoDocument(<Component />);
  });
  afterEach(() => {
    sandbox.restore();
  });
  it('should login', (done) => {
    Instance._submitHandler({})({})
      .then(() => {
        expect(AuthActions.login.called).to.equal(true);
        done();
      }, done);

    setTimeout(() => {
      server.respond();
    }, 0);
  });
});

所以在这里它试图找到一个名为 foreach (DataRow dr in objNews.GetFirstImgOrVideo().Rows) { litFirstImg.Text += "<div class='item'>" + "<img src='img/news/" + dr["fldSliderImg"] + "' class='img-responsive' />" + "<iframe src='" + dr["fldSliderVideo"] + "'></iframe>" + "</div>"; } 的对象,它有void on_<object name>_<signal name>(<signal parameters>); 信号将它连接到你的插槽。但是没有这样的事情,它会输出警告。

如果您有这样的插槽,您应该将其名称更改为其他内容以避免此警告。

如果按钮和插槽不再存在,请尝试在项目上再次运行qmake,它将会解决。

答案 2 :(得分:0)

更改功能的名称,或者在公共/私人插槽中声明功能,而不是在公共或私人中声明它。