远好奇小哥 2023-06-18 11:37 采纳率: 66.7%
浏览 106
已结题

qt 多个选择一个功能实现

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

img


  • 写回答

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 信号连接到了一个槽函数上。当用户点击列表框中的任何项时,都会触发这个槽函数。
    • 在槽函数中,首先打印出被点击项的文本,然后清除所有列表项的 "√",并在被点击的列表项的文本后面添加 "√"。

    这这个代码也假设 "√" 是用来表示当前选择的语言的,如果你要一个不同的表示方式,那么你可能需要修改这个代码。

    评论

报告相同问题?

问题事件

  • 系统已结题 6月26日
  • 修改了问题 6月20日
  • 修改了问题 6月19日
  • 修改了问题 6月18日
  • 展开全部