gpt4 book ai didi

c++ - 从 QListWidget 和 QTableWidget 获取被点击的项目

转载 作者:行者123 更新时间:2023-11-27 23:39:50 24 4
gpt4 key购买 nike

当用户点击它们时,我需要从 QTableWidged 和 Q ListWidget 中读取一个项目。

对于 QListWidget,我尝试了描述的解决方案 here ,但是使用过的 SIGNAL itemClicked 似乎永远不会触发。

对于 QTableWidget,我尝试了多种解决方案,但它们要么不起作用,要么不是我需要的。 QTableWidget 是否有一个简单的解决方案,我是否只是忽略了为 QListWidget 提供的解决方案?

编辑:

我的 MainWindow.cpp 构造函数如下所示:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);


ui->TableWidget->verticalHeader()->setVisible(true);

QTableWidget* table = ui->TableWidget;

connect(ui->listWidget, SIGNAL(itemClicked(QListWidgetItem*)),
this, SLOT(showBuchungsDetails(parseListWidgetBuchung(QListWidgetItem*))));

QHeaderView *header = qobject_cast<QTableView *>(table)->horizontalHeader();
connect(header, &QHeaderView::sectionClicked, [this](int logicalIndex){
QString text = ui->TableWidget->horizontalHeaderItem(logicalIndex)->text();
ui->lnBuchungsnummer->setText(text);

});

}

这是我的 MainWindow 头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>
#include <QFileDialog>
#include <QListWidget>
#include "TravelAgency.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();

private slots:
void on_actionDatei_einlesen_triggered();

void on_actionProgramm_beenden_triggered();

void on_actionBuchungen_anzeigen_triggered();

Customer* parseListWidgetBuchung(QListWidgetItem* item);

Customer* parseTableWidgetBuchung(QString item);

void showBuchungsDetails(Customer* c);

private:
Ui::MainWindow *ui;
TravelAgency travelagency{};
bool inputReady = false;
QStringList m_TableHeader;

};

#endif // MAINWINDOW_H

编辑 2:我正在使用 Qt Creator 4.8.2

最佳答案

不要对 C++ 信号和槽使用 SLOT/SIGNAL 语法。这很容易出错,因为在编译期间不会发现此类错误。您的代码可以正常编译,但无法正常工作。

使用 Qt5 连接语法。在这种情况下,您可以使用 lambda:

connect(ui->listWidget, &QListWidget::itemClicked, this, [this](QListWidgetItem* item)
{
showBuchungsDetails(parseListWidgetBuchung(item));
});

关于c++ - 从 QListWidget 和 QTableWidget 获取被点击的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56105097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com