Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281458
  • 博文数量: 59
  • 博客积分: 1346
  • 博客等级: 中尉
  • 技术积分: 461
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-06 17:17
文章分类

全部博文(59)

文章存档

2012年(9)

2011年(50)

分类: C/C++

2011-08-11 15:14:26

C++ GUI Qt4编程中项视图类的代码
coordinatesetter.h文件
#include
#include
#include
class QPushButton;
class QTableWidget;
class CoordinateSetter : public QDialog
{
    Q_OBJECT
public:
    CoordinateSetter(QList *coords, QWidget *parent = 0);
   // void done(int result);
private slots:
    void addRow();
private:
    QTableWidget *tableWidget;
    QPushButton *addRowButton;
    QPushButton *okButton;
    QPushButton *cancelButton;
    QList *coordinates;
};
coordinatesetter.cpp文件
#include
#include "coordinatesetter.h"
CoordinateSetter::CoordinateSetter(QList *coords,
                                   QWidget *parent)
    : QDialog(parent)
{
    coordinates = coords;
    tableWidget = new QTableWidget(0, 2);
    tableWidget->setHorizontalHeaderLabels(
            QStringList() << tr("X") << tr("Y"));//设置了水平头标签
    for (int row = 0; row < coordinates->count(); ++row) {//row小于写入的值coordinates的列表数量
        QPointF point = coordinates->at(row);  //浮点数指向一行的位置
        addRow();
        tableWidget->item(row, 0)->setText(QString::number(point.x()));//将浮点数x轴写入第0列QTableWidgetItem * QTableWidget::item ( int row, int column ) const
        tableWidget->item(row, 1)->setText(QString::number(point.y()));//将浮点数y轴写入第1列。将pointx.x()转换为字符串型
    }
//QString::number 将数据转换为字符串String QString::number ( long n, int base = 10 )
    addRowButton = new QPushButton(tr("&Add Row"));
    okButton = new QPushButton(tr("OK"));
    okButton->setDefault(true);
    cancelButton = new QPushButton(tr("Cancel"));
    connect(addRowButton, SIGNAL(clicked()), this, SLOT(addRow()));
    connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
    QHBoxLayout *buttonLayout = new QHBoxLayout;//水平布局
    buttonLayout->addWidget(addRowButton);
    buttonLayout->addStretch();
    buttonLayout->addWidget(okButton);
    buttonLayout->addWidget(cancelButton);
    QVBoxLayout *mainLayout = new QVBoxLayout;//垂直布局
    mainLayout->addWidget(tableWidget);
    mainLayout->addLayout(buttonLayout);   //将水平布局中的控件加入到垂直布局中来
    setLayout(mainLayout);               //确定设置了以上布局
    setWindowTitle(tr("Coordinate Setter"));
}
/*
void CoordinateSetter::done(int result)
{
    if (result == QDialog::Accepted) {
        coordinates->clear();
        for (int row = 0; row < tableWidget->rowCount(); ++row) {
            double x = tableWidget->item(row, 0)->text().toDouble();
            double y = tableWidget->item(row, 1)->text().toDouble();
            coordinates->append(QPointF(x, y));
        }
    }
    QDialog::done(result);
}
*/
void CoordinateSetter::addRow() //添加行并且设置了表格中数据的位置
{
    int row = tableWidget->rowCount();//行的数量在表格中
    tableWidget->insertRow(row);  //在上面的行数下插入一个空行到表格中
    QTableWidgetItem *item0 = new QTableWidgetItem;
    item0->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);  //设置数据在表格中的位置位靠右,居中
    tableWidget->setItem(row, 0, item0);   //设置表格中每行中的第1列中的数据是按照item0设置的
    QTableWidgetItem *item1 = new QTableWidgetItem;
    item1->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
    tableWidget->setItem(row, 1, item1);
    //tableWidget->setCurrentItem(item0);
 
main.cpp
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QList coordinates;
    coordinates << QPointF(0.0, 0.9)   //将QPointF设定的数值放进QList类清单里面去
                << QPointF(0.2, 11.0)
                << QPointF(0.4, 15.4)
                << QPointF(0.6, 12.9)
                << QPointF(0.8, 8.5)
                << QPointF(1.0, 7.1)
                << QPointF(1.2, 4.0)
                << QPointF(1.4, 13.6)
                << QPointF(1.6, 22.2)
                << QPointF(1.8, 22.2);
    CoordinateSetter coordinateSetter(&coordinates);
    coordinateSetter.show();
    return app.exec();
}
阅读(2538) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~