मैंने चेकबॉक्स के साथ अपने आइटम के रूप में एक सरल combobox लिखा था। जब मैं कोई आइटम चुनता हूं और बटन दबाता हूं, तो यह दिखाता है कि मैंने कौन सी वस्तु चुनी है। लेकिन मैं ऐसा कुछ करना चाहता हूं: मेरे पास "सब" नामक एक वस्तु है - जब मैं इसे चुनता हूं, तो अन्य सभी वस्तुओं का चयन किया जाना चाहिए, और जब मैं इसे अचयनित करता हूं, तो अन्य सभी वस्तुओं को अचयनित किया जाना चाहिए। कोई विचार?कॉम्बोबॉक्स, चेकबॉक्स के अंदर कॉम्बोबॉक्स, सी ++ क्यूटी, सभी चेकबॉक्स का चयन/चयन रद्द करें
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStandardItemModel>
#include <QComboBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QStandardItemModel *model;
private slots:
void buttonclicked();
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->model = new QStandardItemModel(4, 1); // 4 rows, 1 col
for (int r = 0; r < 4; ++r)
{
QStandardItem* item;
if(r == 0)
item = new QStandardItem(QString("All"));
else
item = new QStandardItem(QString("Item %0").arg(r));
item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
item->setData(Qt::Unchecked, Qt::CheckStateRole);
model->setItem(r, 0, item);
}
ui->comboBox->setModel(model);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(buttonclicked()));
}
void MainWindow::buttonclicked()
{
unsigned int i;
for(i=0; i<ui->comboBox->count(); i++)
{
QModelIndex index = ui->comboBox->model()->index(i, 0);
QVariant v = index.data(Qt::CheckStateRole);
int j = v.toInt();
if(j == 2)
{
QModelIndex ii = ui->comboBox->model()->index(i, 0);
QString text = ii.data(Qt::DisplayRole).toString();
qDebug() << text;
}
}
qDebug()<<"";
}
MainWindow::~MainWindow()
{
delete ui;
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
ui फ़ाइल
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QComboBox" name="comboBox">
<property name="geometry">
<rect>
<x>100</x>
<y>50</y>
<width>201</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>110</x>
<y>100</y>
<width>181</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Check what was selected</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
यह इस तरह दिखता है:
बटन के लिए, चेकबॉक्स के लिए नहीं? –
सही। कार्रवाई तब होती है जब 'सभी' बटन क्लिक किया जाता है, आप जो करते हैं वह combobox की सामग्री के लिए होगा। – UpAndAdam
ओह, आपका मतलब कोई बटन नहीं है, आपका मतलब है कि 'सब' नामक कंबोबॉक्स के भीतर एक शाब्दिक वस्तु है? मैं आपके जीवन को आसान बना दूंगा और कंबोबॉक्स के ऊपर एक बटन होगा कि यदि टॉगल किया गया तो या तो बॉक्स में सभी आइटमों का चयन रद्द कर देगा या सभी को अचयनित कर देगा।कम्बोबॉक्स के भीतर सभी वस्तुओं को अन्य वस्तुओं को प्रबंधित करने के लिए कितना आसान और टालना पड़ता है, जिसे उन्हें आमतौर पर – UpAndAdam