zoukankan      html  css  js  c++  java
  • Qt5:动态对话框

    动态对话框实现也比较容易 , 也是使用  QtDesigner  设计好 用户界面  ,获得  *.ui  文件

    但是  此时 不是用 setupUi  来  将设计好的用户界面应用到窗口上  而是  使用 QUiLoader  类  通过   *.ui  文件动态创建一个窗口

    这样 , 就可以在程序运行过程中动态的更换窗口界面了

    实例代码

      

     1     QApplication a(argc, argv);
     2     QUiLoader uiloader;
     3     QWidget*  dlg = new QWidget;
     4 
     5     QFile    file1("mainwindow.ui");
     6     file1.open(QFile::ReadOnly);
     7     dlg = uiloader.load(&file1);
     8     dlg->show();
    

    这样生成的窗口中 , 要想访问窗口的界面元素 (就是窗口中的子窗口部件) ,就要通过一下手段

    QComboBox *  primaryColumnCombo  =   dlg->findChild<QComboBox *>( "primaryColumnCombox");
    if(primaryColumnCombo == NULL){

      //..........................错误处理....................

    }

    但是  在  VC6  中 , 由于受编译器的限制 ,QObject::findChild<T>   这个函数不能使用   ,   为了解决这个问题

    可以调用   qFindChild <T>  这个全局函数  ,  用法和  QOBject::findChild<T>  相同

    (Qt5 的文档中找不到 qFindChild 这个函数  只能找到一个  qFindChildren  函数  可以尝试用这个函数替换)

    注意 :  在编译程序前   在 *.pro  文件中 加入   CONFIG += uitools   这一句

    这是因为 QUiLoader 是放在Qt的一个独立库中的 , 要是用这个库就要加上这一句

    但是 在  Qt5 中 ,  已经不赞成   添加  CONFIG += uitools 了

    推荐的做法是  添加  Qt   +=  uitools

  • 相关阅读:
    Spring学习总结之高级装配
    Spring学习总结之装配bean
    NS2安装过程中环境变量设置的问题(ns-2.35)
    =======================分割线======================================
    java的内存管理机制
    Python之面向对象编程
    Python之列表生成式
    Python之函数的参数
    Git基础级介绍
    第四次作业——个人作业——软件案例分析
  • 原文地址:https://www.cnblogs.com/wowk/p/3113121.html
Copyright © 2011-2022 走看看