Qt Pixelator Example 看看看~

本文通过Qt的Pixelator示例,探讨如何利用自定义委托改变标准视图的外观。示例中,创建了一个显示像素亮度值的模型,并设计了一个自定义委托,以黑白圆点的半径来表示像素的灰度。文章涵盖了实现自定义模型和委托的详细过程,并附带了程序截图。
摘要由CSDN通过智能技术生成

Pixelator也是个自定义委托的例子,这是个挺有意思的例子,好好看看!

这个例子展示了怎么用自定义委托去修改标准视图外观。为了完成这个任务,我们需要实现下面的组件。

1. 一个在图片做为数据项的情况下表示每个像素的模型,在这模型里,每个项都包含一个亮度值一致的像素。

2. 一个自定义委托,它使用被模型提供的信息去表示每个作为白底黑圆的像素,这些圆的半径和它像素点的黑度一致。

意思就是1,我们要实现一个自定义的模型,模型里的项是亮度一致的像素。2,自定义一个委托用使用自定义的模型提供的像素项,让黑色的半径来表示像素点的灰度值。程序截图如下:

 

程序包含三个主要类,MainWindow主窗口,ImageModel,PixelDelegate。

int main(int argc, char *argv[])
{
    Q_INIT_RESOURCE(images);

    QApplication app(argc, argv);
    MainWindow window;
#if defined(Q_OS_SYMBIAN)
    window.showMaximized();
#else
    window.show();
#endif
    window.openImage(":/images/qt.png");  // 初始化图
    return app.exec();
}
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();

    void openImage(const QString &fileName);

public slots:
    void chooseImage();     // 选择图片槽
    void printImage();      // 打印图片槽
    void showAboutBox();    // 显示aboutBox槽
    void updateView();      // 更新视图槽

private:
    ImageModel *model;       // 模型指针
    QAction *printAction;    // 打印动作指针
    QString currentPath;     // 打开选择图片时用的路径
    QTableView *view;        // 主窗口的表视图指针
};
//! [0]
MainWindow::MainWindow()
{
//! [0]
    currentPath = QDir::homePath();       // home路径,就是用户文件夹位置
    model = new ImageModel(this);         // 创建ImageModel自定义模型

    QWidget *centralWidget = new QWidget; // MainWindow中心的主部件,将其他部件都放在它里面

//! [1]
    view = new QTableView;              // 创建表视图
    view->setShowGrid(false);           // 不显示表的格子
    view->horizontalHeader()->hide();   // 隐藏横向表头
    view->verticalHeader()->hide();     // 隐藏纵向表头
    view->horizontalHeader()->setMinimumSectionSize(1);  // 横向表头最小值
    view->verticalHeader()->setMinimumSectionSize(1);    // 纵向表头最小值
    view->setModel(model);              // 为表视图设置模型:ImageModel的实例
//! [1]

//! [2]
    PixelDelegate *delegate = new PixelDelegate(this);  // 实例化自定义的委托
    view->setItemDelegate(delegate);                    // 为表视图设置委托
//! [2]

//! [3]
    // 表视图下方的label和spinBox
    QLabel *pixelSizeLabel = new QLabel(tr("Pixel size:"));
    QS
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值