V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
movq
V2EX  ›  Qt

Qt 纯小白求教

  •  
  •   movq · 2020-12-24 09:41:35 +08:00 · 1448 次点击
    这是一个创建于 508 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在在 mainwindow 的 ui 里面用 designer 拖进去了一个 QGraphicsView

    GB2eSgohxEcOIVm

    然后我把这个 QGraphicsView 提升成了 QChartView

    然后我在 mainwindows.cpp 里面创建了一个全局的 QChart 和 QChartView

    auto chart  = new QChart;
    auto chartView = new QChartView(chart);
    

    dMGlx3RBo27TsHw

    那么我怎么才能把我自己定义的 chart 在 ui 界面上面显示出来呢?

    4 条回复    2020-12-25 10:07:17 +08:00
    hanleisky
        1
    hanleisky  
       2020-12-24 10:24:57 +08:00   ❤️ 1
    1. 有那么一小种情况是你想用界面提升的 CharView 去显示你自己创建的 chart,那么,把你的代码改成
    ```cpp
    auto chart = new QChart;
    ui->graphicsView->setChart(chart);
    ```

    1. 那另外一种就是你确实想再增加一个 QChartView,那么,在 ui 里面找个合适的布局,塞进去就可以了
    ```cpp
    auto chart = new QChart;
    auto chartView = new QChartView(chart);
    ui->whateverLayout->addWidget(charView);
    ```
    就好了
    imn1
        2
    imn1  
       2020-12-24 10:34:27 +08:00   ❤️ 1
    我只懂 pyqt,C++的不懂,不过控件都一样的

    你要么只用 designer,要么只用代码,两个混用要有一定的熟悉程度

    主程序一般设好 app,引入 mainwindow,app 绑定 mainwindows 就行了,不必再设控件
    逻辑就是,app 绑定一个且唯一一个 mainwindows,然后所有控件都在这个 mainwindows 呈现
    main 只控制 app 的启动和结束,包括这两个动作的额外操作,例如启动前读入 config 改变 mainwindow 的传入参数,结束时保存 config,诸如此类
    imn1
        3
    imn1  
       2020-12-24 10:48:40 +08:00   ❤️ 1
    另外,关于自定义控件
    pyqt 是自定义一个类,继承 qt 的预设控件,然后 mainwindow 直接就用这个自定义类就可以了,不需要再添加那个预设控件
    我看 qt 的例程( C++)也是这样写的,差不多(应该说 pyqt 跟 Qt 差不多才对)


    class CustomChar(QChartView):
    ....

    mychar = CustomChar()

    mainwindow.addWidget(mychar)
    hszz3
        4
    hszz3  
       2020-12-25 10:07:17 +08:00
    设置父组件或者加到布局里。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3980 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 96ms · UTC 09:23 · PVG 17:23 · LAX 02:23 · JFK 05:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.