Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2644519
  • 博文数量: 416
  • 博客积分: 10220
  • 博客等级: 上将
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 09:47
文章分类

全部博文(416)

文章存档

2022年(1)

2021年(1)

2020年(1)

2019年(5)

2018年(7)

2017年(6)

2016年(7)

2015年(11)

2014年(1)

2012年(5)

2011年(7)

2010年(35)

2009年(64)

2008年(48)

2007年(177)

2006年(40)

我的朋友

分类: C/C++

2011-08-26 14:22:59

/////////////////////////////////////////////////
LineEditorCreator.h::
#include
#include "window.h"

class LineEditorCreator : public QLineEdit
{
Q_OBJECT
Q_PROPERTY(QString text READ text WRITE setText USER true)

public:
LineEditorCreator(QWidget *widget = 0)
: QLineEdit(widget)
{
qDebug() << "pName = " << widget->objectName();
connect(this, SIGNAL(textChanged ( const QString &) ), window, SLOT(slotTextChange(const QString &)));
};

~LineEditorCreator(){
disconnect();
}

QString text() const
{
return QLineEdit::text();
};

void setText(QString text)
{
QLineEdit::setText(text);
};

static void setItemWidget(Window *w){
window = w;
}

private:
static Window *window;

};
/////////////////////////////////////////////////
#ifndef WINDOW_H
#define WINDOW_H

#include
class QTableWidget;

class Window : public QWidget
{
    Q_OBJECT

public:
    Window();

public slots:
void slotTextChange(const QString &text);
void changeTest(int row, int col);

private:
    void createGUI();
QTableWidget *table;
};

#endif

/////////////////////////////////////////////////LineEditorCreator.cpp
#include "LineEditorCreator.h"

Window *LineEditorCreator::window = NULL;
/////////////////////////////////////////////////Window.cpp

#include

#include "window.h"
#include "colorlisteditor.h"
#include "LineEditorCreator.h"
//! [0]
Window::Window()
{
    /*QItemEditorFactory *factory = new QItemEditorFactory;

    QItemEditorCreatorBase *colorListCreator =new QStandardItemEditorCreator();
factory->registerEditor(QVariant::Color, colorListCreator);
    QItemEditorFactory::setDefaultFactory(factory);*/
QItemEditorFactory *factory = new QItemEditorFactory();
QItemEditorCreatorBase *lineEditorCreator = new QStandardItemEditorCreator();

factory->registerEditor(QVariant::String, lineEditorCreator);
QItemEditorFactory::setDefaultFactory(factory);
LineEditorCreator::setItemWidget(this);
//table->setItemDelegate(&delegate);
    createGUI();
}
//! [0]

void Window::createGUI()
{
    QList > list;
    list << QPair(tr("Alice"), QColor("aliceblue")) <<
            QPair(tr("Neptun"), QColor("aquamarine")) <<
            QPair(tr("Ferdinand"), QColor("springgreen"));


table = new QTableWidget(3, 2);
table->setObjectName("tableTTT");
    table->setHorizontalHeaderLabels(QStringList() << tr("Name") << tr("Hair Color"));
    table->verticalHeader()->setVisible(false);
    table->resize(150, 50);
connect(table, SIGNAL(cellChanged(int,int)), this, SLOT(changeTest(int, int)));
table->blockSignals(true);
    for (int i = 0; i < 3; ++i) {
        QPair pair = list.at(i);

        QTableWidgetItem *nameItem = new QTableWidgetItem(pair.first);
        QTableWidgetItem *colorItem = new QTableWidgetItem;
        colorItem->setData(Qt::DisplayRole, pair.second);
nameItem->setCheckState(Qt::Checked);
//nameItem->setFlags(colorItem->flags () | Qt::ItemIsUserCheckable);

        table->setItem(i, 0, nameItem);
        table->setItem(i, 1, colorItem);
    }
    table->resizeColumnToContents(0);
    table->horizontalHeader()->setStretchLastSection(true);

    QGridLayout *layout = new QGridLayout;
    layout->addWidget(table, 0, 0);
table->blockSignals(false);

    setLayout(layout);

    setWindowTitle(tr("Color Editor Factory"));
}

void Window::slotTextChange(const QString &text)
{
QTableWidgetItem *item = table->currentItem();
qDebug() << "edit = " << text;
qDebug() << "edit = " << item->data(Qt::DisplayRole) << item->checkState();
}


void Window::changeTest(int row, int col)
{
if (col==0){
if(table->item(row, col)->checkState() == Qt::Checked)
qDebug() << "checked ";
else
qDebug() << "unchecked ";
}
}
/////////////////////////////////////////////////main.cpp

#include

#include "window.h"

int main(int argv, char **args)
{
    QApplication app(argv, args);

    Window window;
    window.show();

    return app.exec();
}


/////////////////////////////////////////////////
阅读(2701) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~