请问,怎样实现这个功能,当点击红框内任意位置,就会打印被点击的语言,并且打钩就会转移到被点击那一栏的后面,(想要信号与槽函数做,有其他方法也可以)
还有麻烦写出代码;

qt 多个选择一个功能实现
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
7条回答 默认 最新
- PhoenixRiser 2023-06-18 14:02关注
获得1.05元问题酬金 TechWhizKid参考GPT回答:
下面是一个基础的解决方案:
#include <QApplication> #include <QListWidget> #include <QListWidgetItem> #include <QVBoxLayout> #include <QDebug> class LanguageSelector : public QWidget { public: LanguageSelector(QWidget *parent = nullptr) : QWidget(parent) { QVBoxLayout *layout = new QVBoxLayout(this); listWidget = new QListWidget(this); layout->addWidget(listWidget); QListWidgetItem *item1 = new QListWidgetItem("简体中文 √", listWidget); QListWidgetItem *item2 = new QListWidgetItem("English", listWidget); // 默认选择第一项 listWidget->setCurrentItem(item1); connect(listWidget, &QListWidget::itemClicked, this, &LanguageSelector::onItemClicked); } private slots: void onItemClicked(QListWidgetItem *item) { qDebug() << "Language Selected:" << item->text(); for (int i = 0; i < listWidget->count(); ++i) { QListWidgetItem *eachItem = listWidget->item(i); QString text = eachItem->text(); text = text.remove(" √"); eachItem->setText(text); } item->setText(item->text() + " √"); } private: QListWidget *listWidget; }; int main(int argc, char *argv[]) { QApplication a(argc, argv); LanguageSelector w; w.show(); return a.exec(); }
- 以上代码创建了一个列表框,并在列表框中添加了两个列表项,一个为 "简体中文 √",另一个为 "English"。然后,将列表框的 itemClicked 信号连接到了一个槽函数上。当用户点击列表框中的任何项时,都会触发这个槽函数。
- 在槽函数中,首先打印出被点击项的文本,然后清除所有列表项的 "√",并在被点击的列表项的文本后面添加 "√"。
这这个代码也假设 "√" 是用来表示当前选择的语言的,如果你要一个不同的表示方式,那么你可能需要修改这个代码。
解决 1无用