• 5445阅读
  • 3回复

[提问]一个奇怪的弹出提示窗口的问题,跪求解答 [复制链接]

上一主题 下一主题
离线dancingmokey
 

只看楼主 倒序阅读 楼主  发表于: 2012-08-30
一个七寸屏上的嵌入式程序,其中有个功能是点击按钮读取文件并生成一个QTableWidget,因为耗时较长,所以想做一个弹出窗口提示正在读取数据。但奇怪的是这个窗口初始化时隐藏后无论如何都不再显示。跪求高人解答!!

  1. #include "ResultWidget.h"
  2. #include <QDialog>
  3. #include <time.h>
  4. #include <windows.h>
  5. //
  6. //@@
  7. //
  8. ResultWidget::ResultWidget(QWidget *parent) :
  9.     QWidget(parent)
  10. {
  11.     //
  12.     //
  13.     this->InitUI();
  14.     //
  15.     //
  16.     this->CreateConnect();
  17. }
  18. //
  19. //@@
  20. //
  21. ResultWidget::~ResultWidget()
  22. {
  23.     //
  24. }
  25. //
  26. //@@
  27. //
  28. void ResultWidget::InitUI(void)
  29. {
  30.     //
  31.     //
  32.     QFont font;
  33.     font.setFamily(QString::fromUtf8("WenQuanYi Zen Hei"));
  34.     font.setPointSize(36);
  35.     font.setBold(false);
  36.     font.setWeight(50);
  37.     //
  38.     //
  39.     this->resize(800, 390);
  40.     this->setMinimumSize(QSize(800, 390));
  41.     this->setMaximumSize(QSize(800, 390));
  42.     //
  43.     //
  44.     TestObjLabel = new QLabel(this);
  45.     TestObjLabel->setObjectName(QString::fromUtf8("TestObjLabel"));
  46.     TestObjLabel->setFont(font);
  47.     TestObjLabel->setText(QString(QObject::tr("测试主机: 机车信号主机")));
  48.     //
  49.     //
  50.     TestPlugLabel = new QLabel(this);
  51.     TestPlugLabel->setObjectName(QString::fromUtf8("TestPlugLabel"));
  52.     TestPlugLabel->setFont(font);
  53.     TestPlugLabel->setText(QString(QObject::tr("测试插头:X30")));
  54.     //
  55.     //
  56.     TestTimeLabel = new QLabel(this);
  57.     TestTimeLabel->setObjectName(QString::fromUtf8("TestTimeLabel"));
  58.     TestTimeLabel->setFont(font);
  59.     TestTimeLabel->setText(QString(QObject::tr("测试时间:2012年7月12日 12:45:32")));
  60.     //
  61.     //
  62.     TestUnitLabel = new QLabel(this);
  63.     TestUnitLabel->setObjectName(QString::fromUtf8("TestUnitLabel"));
  64.     TestUnitLabel->setFont(font);
  65.     TestUnitLabel->setText(QString(QObject::tr("数据单位:兆欧")));
  66.     //
  67.     //
  68.     ListWidget = new QTableWidget(this);
  69.     ListWidget->setFont(font);
  70.     ListWidget->setContextMenuPolicy(Qt::DefaultContextMenu);
  71.     ListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  72.     //
  73.     //
  74.     QWidget *verticalLayoutWidget = new QWidget(this);
  75.     verticalLayoutWidget->setObjectName(QString::fromUtf8("verticalLayoutWidget"));
  76.     verticalLayoutWidget->setGeometry(QRect(10, 10, 781, 341));
  77.     //
  78.     //
  79.     verticalLayout = new QVBoxLayout(verticalLayoutWidget);
  80.     verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
  81.     verticalLayout->setContentsMargins(0, 0, 0, 0);
  82.     verticalLayout->addWidget(TestObjLabel);
  83.     verticalLayout->addWidget(TestPlugLabel);
  84.     verticalLayout->addWidget(TestTimeLabel);
  85.     verticalLayout->addWidget(TestUnitLabel);
  86.     verticalLayout->addWidget(ListWidget);
  87.     //
  88.     //
  89.     ReturnPBtn = new QPushButton(this);
  90.     ReturnPBtn->setObjectName(QString::fromUtf8("ReturnPBtn"));
  91.     ReturnPBtn->setGeometry(QRect(315, 352, 75, 31));
  92.     ReturnPBtn->setFont(font);
  93.     //
  94.     //
  95.     ShowDetailPBtn = new QPushButton(this);
  96.     ShowDetailPBtn->setObjectName(QString::fromUtf8("ShowDetailPBtn"));
  97.     ShowDetailPBtn->setGeometry(QRect(410, 352, 75, 31));
  98.     ShowDetailPBtn->setFont(font);
  99.     //
  100.     //
  101.     //
  102.     //@@就是这个widget
  103.     //
  104.     HintMsgWidget = new QWidget(this);
  105. //    HintMsgWidget->setWindowFlags(Qt::Popup);
  106.     HintMsgWidget->setFont(font);
  107.     HintMsgWidget->setStyleSheet("color:white; background-color:blue");
  108.     HintMsgWidget->setGeometry(QRect(200, 30, 400, 240));
  109.     HintMsgWidget->hide();
  110.     //
  111.     //
  112.     HintMsg1Label = new QLabel(HintMsgWidget);
  113.     HintMsg1Label->setObjectName(QString::fromUtf8("HintMsg1Label"));
  114.     HintMsg1Label->setFont(font);
  115.     HintMsg1Label->setGeometry(0, 0, 400, 120);
  116.     HintMsg1Label->setAlignment(Qt::AlignCenter);
  117.     HintMsg1Label->setText(QString(QObject::tr("正在读取数据......")));
  118.     //
  119.     //
  120.     HintMsg2Label = new QLabel(HintMsgWidget);
  121.     HintMsg2Label->setObjectName(QString::fromUtf8("HintMsg2Label"));
  122.     HintMsg2Label->setFont(font);
  123.     HintMsg2Label->setGeometry(0, 120, 400, 120);
  124.     HintMsg2Label->setAlignment(Qt::AlignCenter);
  125.     HintMsg2Label->setText(QString(QObject::tr("请稍候....")));
  126.     //
  127.     //
  128.     //
  129.     //
  130.     this->ShowResultList();
  131. }
  132. //
  133. //@@
  134. //
  135. void ResultWidget::CreateConnect(void)
  136. {
  137.     //
  138.     //
  139.     connect(this->ReturnPBtn, SIGNAL(clicked()), this, SLOT(PBtnClickedSlot()));
  140.     connect(this->ShowDetailPBtn, SIGNAL(clicked()), this, SLOT(PBtnClickedSlot()));
  141. }
  142. //
  143. //@@
  144. //
  145. void ResultWidget::ShowResultList(void)
  146. {
  147.     //
  148.     //
  149.     m_ResultShowType = ShowList;
  150.     //
  151.     //
  152.     this->TestObjLabel->hide();
  153.     this->TestPlugLabel->hide();
  154.     this->TestTimeLabel->hide();
  155.     this->TestUnitLabel->hide();
  156.     //
  157.     this->ShowDetailPBtn->show();
  158. }
  159. //
  160. //@@
  161. //
  162. void ResultWidget::ShowResultDetail(void)
  163. {
  164.     //
  165.     //
  166.     m_ResultShowType = ShowDetail;
  167.     //
  168.     //
  169.     this->TestObjLabel->show();
  170.     this->TestPlugLabel->show();
  171.     this->TestTimeLabel->show();
  172.     this->TestUnitLabel->show();
  173.     //
  174.     this->ShowDetailPBtn->hide();
  175. }
  176. //
  177. //@@
  178. //
  179. void ResultWidget::PBtnClickedSlot(void)
  180. {
  181.     //
  182.     //
  183.     QPushButton *ClickedPBtn = qobject_cast<QPushButton*>(sender());
  184.     //
  185.     //
  186.     if (ClickedPBtn->objectName() == "ReturnPBtn")
  187.     {
  188.         //
  189.         if (m_ResultShowType == ShowList)
  190.         {
  191.             //
  192.             emit ChangeWidgetSignal(0);
  193.         }
  194.         else
  195.         {
  196.             //
  197.             m_ResultShowType = ShowList;
  198.             //
  199.             this->ShowResultList();
  200.         }
  201.     }
  202.     else if (ClickedPBtn->objectName() == "ShowDetailPBtn")
  203.     {
  204.         //
  205.         m_ResultShowType = ShowDetail;
  206.         //
  207.         //
  208.         //@@在这里显示,然后等待两秒,然后隐藏
  209.         //
  210.         HintMsgWidget->show();
  211.         HintMsgWidget->raise();
  212.         //
  213.         //
  214.         this->ShowResultDetail();
  215.         //
  216.         //
  217.         Sleep(2000);
  218.         //
  219.         //
  220.         this->HintMsgWidget->hide();
  221.     }
  222.     else
  223.     {
  224.         //
  225.         m_ResultShowType = ShowList;
  226.         //
  227.         emit ChangeWidgetSignal(0);
  228.     }
  229. }

离线dancingmokey

只看该作者 1楼 发表于: 2012-08-31
没有人帮帮忙么?
离线dancingmokey

只看该作者 2楼 发表于: 2012-08-31
沉的真快真快~~~~
离线浪漫天使
只看该作者 3楼 发表于: 2012-09-01
方便的话 把你的 这个代码工程打包下 方便想帮你的人去调试重现。
快速回复
限100 字节
 
上一个 下一个