C - 从qpushbutton将项目添加到Qlistwidget



你好,我正在尝试从qpushbutton添加项目。Qlistwidget和Qpushbutton都添加为Qgraphicsscene内部的单个小部件。我想要一个填充文本线的盒子的效果

main.c

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    QGraphicsView view;
    QGraphicsScene *scene = new QGraphicsScene(0, 0, 1200, 1200, &view);
    scene->setBackgroundBrush(Qt::gray);
    view.setScene(scene);
    QPushButton *PushButton1;
    PushButton1 = new QPushButton();
    PushButton1->setGeometry(QRect(19, 20, 154, 4));
    QListWidget *ListWidget;
    ListWidget = new QListWidget;
    scene->addWidget(ListWidget);
    scene->addWidget(PushButton1);
    QObject::connect(PushButton1, SIGNAL(clicked()),&w, SLOT(handleClick(*QListWidget)));
    view.show();
    return a.exec();

}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::handleClick(QListWidget *List)
{
    int test;
    List->addItem("TESTING");
    //QApplication::quit();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QListWidget>

namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    Ui::MainWindow *ui;

    private slots:

    public slots:
        void handleClick(QListWidget *List);
};
#endif // MAINWINDOW_H

此代码可以很好地编译。当应用程序正在运行

时,如何在控制台中遇到以下错误
QObject::connect: No such slot MainWindow::handleClick(*ListWidget) in ..MenuTestmain.cpp:48

有人可以帮我这样做吗?我已经看过几个教程,但是它正在使用设计师来制作GUI,我想知道如何在不使用Designer的情况下在代码中进行操作。谢谢。

您的插槽接受qlistWidget,但是您正在将ListWidget连接为参数,签名必须是确切的匹配,因为信号和插槽在qt中工作的方式。

将HandleClick放在public slots:下,然后更改此行:

QObject::connect(PushButton1, SIGNAL(clicked()),&w, SLOT(handleClick(*ListWidget)));

QObject::connect(PushButton1, SIGNAL(clicked()),&w, SLOT(handleClick(*QListWidget)));

更新:

我看到我错过了一个关键点,签名必须匹配,例如参数到参数,因此阵容在那里无法正常工作。

要完全修复此参数,因为PushButton1无法自动发送。

QObject::connect(PushButton1, SIGNAL(clicked()),&w, SLOT(handleClick()));

也在此处删除它:

void MainWindow::handleClick()

要访问QListWidget,您必须将其直接引用,要么将其传递到Mainwindow的构造函数或迭代窗口的控件。

相关内容

  • 没有找到相关文章

最新更新