• 7774阅读
  • 6回复

[提问]这个MainWindow程序为什么显示不了? [复制链接]

上一主题 下一主题
离线piteqiu
 

只看楼主 倒序阅读 楼主  发表于: 2011-10-23
分3个文件:
mainwindow.h
--------------------------------------------------------------------------------------------------------------------------------------------
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>
#include <QList>
#include <QPointF>

class QPushButton;
class QTableWidget;
class QLabel;
class QLineEdit;

class MainWindow : public QMainWindow

{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    QLabel *nvlabel,*nlooplabel;
    QLineEdit *nvlineedit,*nlooplineedit;
    QTableWidget *table;
    QPushButton *fitButton;
    QPushButton *closeButton;

};
#endif // MAINWINDOW_H
--------------------------------------------------------------------------------------------------------------------------------------------

mainwindow.cpp
--------------------------------------------------------------------------------------------------------------------------------------------
#include "mainwindow.h"
#include <QtGui>

MainWindow::MainWindow(QWidget *parents)
    : QMainWindow( parents)
{
    table=new QTableWidget;
    table->setColumnCount(3);
    table->setRowCount(5);
    table->horizontalHeader()->setStretchLastSection(true);
    table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);

    QStringList headers;  
    headers << "Line Number" << "ID" << "Name" << "Age" << "Sex";
    table->setHorizontalHeaderLabels(headers);
    table->setItem(0, 0, new QTableWidgetItem(QString("1")));  
    table->setItem(1, 0, new QTableWidgetItem(QString("2")));  
    table->setItem(2, 0, new QTableWidgetItem(QString("3")));  
    table->setItem(3, 0, new QTableWidgetItem(QString("4")));  
    table->setItem(4, 0, new QTableWidgetItem(QString("5")));  

    fitButton= new QPushButton("fitting");
    closeButton=new QPushButton("close");

    nvlabel=new QLabel(tr("n_v"));
    nlooplabel=new QLabel(tr("n_loop"));

    nvlineedit=new QLineEdit;
    nlooplineedit=new QLineEdit;

    QHBoxLayout *tophlayout = new QHBoxLayout;
    tophlayout->addWidget(nvlabel);
    tophlayout->addWidget(nvlineedit);
    tophlayout->addWidget(nlooplabel);
    tophlayout->addWidget(nlooplineedit);

    QVBoxLayout *vlayout = new QVBoxLayout;
    vlayout->addLayout(tophlayout);
    vlayout->addWidget(table);

    setLayout(vlayout);
    setWindowTitle(tr("fit ABC"));
    showMaximized();
}
--------------------------------------------------------------------------------------------------------------------------------------------

main.cpp
--------------------------------------------------------------------------------------------------------------------------------------------
#include <QtGui>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow *mainwindow=new MainWindow;
    mainwindow->show();
    return a.exec();
}
--------------------------------------------------------------------------------------------------------------------------------------------
如果这样的话,显示结果如下:
window.open('http://www.qtcn.org/bbs/attachment/Mon_1110/17_108454_ae24f5fc8b9c8a9.jpg?10');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >


如果加上一句:setCentralWidget(table);   显示结果如下:





label和button也显示不出来。
请问问题到底出在哪里呢?


离线dbzhang800

只看该作者 1楼 发表于: 2011-10-23
静下心,看完这个

http://blog.csdn.net/dbzhang800/article/details/6744650

应该有你需要的所有答案
离线piteqiu

只看该作者 2楼 发表于: 2011-10-23
回 1楼(dbzhang800) 的帖子
谢谢回复,看了下你给的链接,上面说QMainWindow这个东西,其实已经有了一个layout,不能再添加其他的layout。但是QMainWindow默认的layout是什么呢?我希望的布局又如何实现呢?谢谢!
离线dbzhang800

只看该作者 3楼 发表于: 2011-10-23
Re:回 1楼(dbzhang800) 的帖子
引用第2楼piteqiu于2011-10-23 19:47发表的 回 1楼(dbzhang800) 的帖子 :
谢谢回复,看了下你给的链接,上面说QMainWindow这个东西,其实已经有了一个layout,不能再添加其他的layout。但是QMainWindow默认的layout是什么呢?我希望的布局又如何实现呢?谢谢!

你之所以要用QMainWindow,需要用的不就是它默认的那个layout么??(让它帮你放置菜单栏、工具栏、状态栏、停靠窗体等等)

除此外,你只需要设计自己的中心窗体,在上面你愿意怎么layout你自己的东西就去怎么layout不就行了
离线piteqiu

只看该作者 4楼 发表于: 2011-10-23
回 3楼(dbzhang800) 的帖子
谢谢回复!新手学习了!
离线zhy282289
只看该作者 5楼 发表于: 2011-10-24
其实你的这些代码应该写在一个QWIDGET里.然后你就用
setCentralWidget()加这个QWIDGET就可以了~
为什么我脸这么胖~
离线newyoung
只看该作者 6楼 发表于: 2011-10-24
QT3版本中怎么做到去掉表格任意航和列的格线
快速回复
限100 字节
 
上一个 下一个