PDA

View Full Version : Check Box problem



Seema Rao
1st May 2006, 14:25
330
Any Idea how to draw this controle? It looks like check buttons on QTextEdit ? I tried to write code to achieve same look and feel ,

#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication myapp(argc,argv);

QWidget *mywidget= new QWidget;
QTextEdit *myedit = new QTextEdit(mywidget);
QCheckBox *one= new QCheckBox("hotels",myedit);
QCheckBox *two= new QCheckBox("Restaurants & Cafes",myedit);
QCheckBox *three= new QCheckBox("Bars,Pubs & Clubs",myedit);
QCheckBox *four= new QCheckBox("Trips & Activities",myedit);
QCheckBox *five= new QCheckBox("Sites & Attractions",myedit);
QCheckBox *six= new QCheckBox("Churches & Temples",myedit);
QCheckBox *seven= new QCheckBox("Historic Buildings",myedit);
QCheckBox *eight= new QCheckBox("Museums",myedit);
QCheckBox *nine= new QCheckBox("Art Galleries",myedit);
QCheckBox *ten= new QCheckBox("Cinemas",myedit);
QCheckBox *eleven= new QCheckBox("Theater",myedit);
QVBoxLayout *lay= new QVBoxLayout;

lay->addWidget(one);
lay->addWidget(two);
lay->addWidget(three);
lay->addWidget(four);
lay->addWidget(five);
lay->addWidget(six);
lay->addWidget(seven);
lay->addWidget(eight);
lay->addWidget(nine);
lay->addWidget(ten);
lay->addWidget(eleven);

myedit->setLayout(lay);
mywidget->setGeometry(10,10,20,20);

mywidget->show();

return myapp.exec();

}
But dialog color appear behind the caption of check Box can some body explain how to get rid of this color/ to get same look and feel

jacek
1st May 2006, 14:33
Any Idea how to draw this controle? It looks like check buttons on QTextEdit ? I tried to write code to achieve same look and feel
Use QListView or QListWidget with checkable items.

SkripT
1st May 2006, 15:06
You could use a QScrollArea too, inserting first all the check boxes in a widget...

Seema Rao
1st May 2006, 15:35
Here is the full code with the modification suggested by you guys, but the problem is items appear multiple times when I resize the window. Am I wrong here ?

#include <QApplication>
#include <QtGui>

int main(int argc, char *argv[])
{
QApplication myapp(argc,argv);

QWidget *mywidget= new QWidget;
QListWidget *myedit = new QListWidget(mywidget);
QListWidgetItem *one= new QListWidgetItem("hotels",myedit);
one->setCheckState(Qt::Unchecked);
QListWidgetItem *two= new QListWidgetItem("Restaurants & Cafes",myedit);
two->setCheckState(Qt::Unchecked);
QListWidgetItem *three= new QListWidgetItem("Bars,Pubs & Clubs",myedit);
three->setCheckState(Qt::Unchecked);
QListWidgetItem *four= new QListWidgetItem("Trips & Activities",myedit);
four->setCheckState(Qt::Unchecked);
QListWidgetItem *five= new QListWidgetItem("Sites & Attractions",myedit);
five->setCheckState(Qt::Unchecked);
QListWidgetItem *six= new QListWidgetItem("Churches & Temples",myedit);
six->setCheckState(Qt::Unchecked);
QListWidgetItem *seven= new QListWidgetItem("Historic Buildings",myedit);
seven->setCheckState(Qt::Unchecked);
QListWidgetItem *eight= new QListWidgetItem("Museums",myedit);
eight->setCheckState(Qt::Unchecked);
QListWidgetItem *nine= new QListWidgetItem("Art Galleries",myedit);
nine->setCheckState(Qt::Unchecked);
QListWidgetItem *ten= new QListWidgetItem("Cinemas",myedit);
ten->setCheckState(Qt::Unchecked);
QListWidgetItem *eleven= new QListWidgetItem("Theater",myedit);
eleven->setCheckState(Qt::Unchecked);
QListWidgetItem *twelve= new QListWidgetItem("Dance",myedit);
twelve->setCheckState(Qt::Unchecked);
QListWidgetItem *thirteen= new QListWidgetItem("Live Music",myedit);
thirteen->setCheckState(Qt::Unchecked);
QListWidgetItem *fourteen= new QListWidgetItem("Stores & Markets",myedit);
fourteen->setCheckState(Qt::Unchecked);
QListWidgetItem *fifteen= new QListWidgetItem("Food & Wine",myedit);
fifteen->setCheckState(Qt::Unchecked);
QListWidgetItem *sixteen= new QListWidgetItem("Clothing & Fashion",myedit);
sixteen->setCheckState(Qt::Unchecked);
QListWidgetItem *seventeen= new QListWidgetItem("Jewelry & Accessories",myedit);
seventeen->setCheckState(Qt::Unchecked);
QListWidgetItem *eighteen= new QListWidgetItem("Shoes",myedit);
eighteen->setCheckState(Qt::Unchecked);
QListWidgetItem *nineteen= new QListWidgetItem("Antiques",myedit);
nineteen->setCheckState(Qt::Unchecked);
QListWidgetItem *twenty= new QListWidgetItem("Bookshops",myedit);
twenty->setCheckState(Qt::Unchecked);

myedit->addItem(one);
myedit->addItem(two);
myedit->addItem(three);
myedit->addItem(four);
myedit->addItem(five);
myedit->addItem(six);
myedit->addItem(seven);
myedit->addItem(eight);
myedit->addItem(nine);
myedit->addItem(ten);
myedit->addItem(eleven);
myedit->addItem(twelve);
myedit->addItem(thirteen);
myedit->addItem(fourteen);
myedit->addItem(fifteen);
myedit->addItem(sixteen);
myedit->addItem(seventeen);
myedit->addItem(eighteen);
myedit->addItem(nineteen);
myedit->addItem(twenty);


QHBoxLayout *lay= new QHBoxLayout(mywidget);
lay->addWidget(myedit);

mywidget->setLayout(lay);

mywidget->setGeometry(10,10,180,50);

mywidget->show();

return myapp.exec();

}

jacek
1st May 2006, 15:43
the problem is items appear multiple times when I resize the window.
Everything is OK on my system (Qt 4.1.2, PLD Linux).

Glitch
2nd May 2006, 16:03
Seema,

Remove the parents from your Item constructors or comment out the addIOtem calls. If you remove the parents the items should be automatically reparented by the addItem() call. I'm assuming by passing a listview parent the constructor is doing an implicit addItem on the parent.

tho97
30th November 2007, 20:32
I want to do like this but I want only 1 checked item in the list ( right now I can check all of them at the same time) how I can do it ?

Thank you