connect: Tidak ada slot seperti itu
connect: Tidak ada slot seperti itu
Lillith Halo, saya sedang mencoba membangun grafis sendiri karena saya ingin menambahkan lineEdits baru secara acak. Sekarang saya memiliki masalah dengan connect. Mungkin Anda bisa memberi tahu saya apa yang salah saya lakukan.
mainwindow:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent):QMainWindow(parent)
{
QPushButton* addButton = new QPushButton;
QPushButton* deleteButton = new QPushButton;
addButton->setText("ADD");
deleteButton->setText("DELETE");
connect(addButton, SIGNAL(clicked()), this, SLOT(addButton_clicked()));
connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteButton_clicked()));
}Dan pada bagian connect saya selalu mendapatkan pesan error: QObject::connect: No such slot MainWindow::addButton_clicked() Hal yang sama juga dengan deleteButton. Di mana letak kesalahan saya? Terima kasih sebelumnya.
daddy_felix Tunjukkan headernya.
Braunstein Pesan itu cukup jelas. Fungsi untuk slot tidak ada. Anda harus menulisnya sendiri. Tombol Anda saat ini juga tidak memiliki parent dan tidak terikat dalam layout. Itu juga harus dilakukan.
Lillith Tombol sudah terikat. Saya tidak menuliskan semuanya karena saya pikir tidak relevan. Header saya:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <vector>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <iostream>
#include <QList>
using namespace std;
class MainWindow:public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget* parent = 0);
~MainWindow();
void addButton_clicked();
void deleteButton_clicked();
private:
QVBoxLayout* layout;
QList<QLineEdit*> qlist;
};
#endif // MAINWINDOW_HDan agar tidak ada kesalahpahaman, berikut file cpp yang lengkap:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent):QMainWindow(parent)
{
QWidget* window = new QWidget(this);
QVBoxLayout* mainlayout = new QVBoxLayout;
layout = new QVBoxLayout;
QHBoxLayout* buttonlayout = new QHBoxLayout;
QPushButton* addButton = new QPushButton;
QPushButton* deleteButton = new QPushButton;
addButton->setText("ADD");
deleteButton->setText("DELETE");
buttonlayout->addWidget(addButton);
buttonlayout->addWidget(deleteButton);
buttonlayout->setAlginment(Qt::AlignTop);
mainlayout->addLayout(layout);
mainlayout->addLayout(buttonlayout);
window->setLayout(mainlayout);
setCentralWidget(window);
connect(addButton, SIGNAL(clicked()), this, SLOT(addButton_clicked()));
connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteButton_clicked()));
}
MainWindow::~MainWindow(){}
void MainWindow::addButton_clicked()
{
QLineEdit* lineEdit = new QLineEdit;
qlist_back(lineEdit);
layout->addWidget(lineEdit);
lineEdit->setObjectName("lineedit"+QString::number(qlist()));
}Ini semua yang saya miliki sejauh ini. Terima kasih.
firefly Metode Anda untuk tombol tidak dideklarasikan sebagai SLOT. Lihat contoh bagaimana model signal/slot di Qt bekerja: http://qt
Lillith Baru saya tulis dan tiba-tiba berfungsi (dalam arti sebenarnya) :) Saya lupa menempatkannya di header di bawah private slots dan tiba-tiba berfungsi... Terima kasih banyak atas bantuannya!
Lillith Ya firefly, jika saya biarkan Qt membuatnya secara otomatis, dia melakukannya sendiri... Saya lupa sekarang. Terima kasih tetap.
Platform Lainnya
Berita Piala Dunia
Jika Anda memiliki pertanyaan, silakan kirim email ke [email protected]