| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 979 人关注过本帖
标题:新手刚接触Qt
只看楼主 加入收藏
yu965634383
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:119
专家分:195
注 册:2017-9-1
结帖率:100%
  问题点数:0  回复次数:4   
新手刚接触Qt
程序代码:
#ifndef MYWIN_5_H
#define MYWIN_5_H

#include <QtWidgets/QMainWindow>
# include <QPushButton>
# include <QVBoxLayout>
# include <QLineEdit>
# include <QPlainTextEdit>
#include "ui_mywin_5.h"

class mywin_5 : public QMainWindow
{
    Q_OBJECT

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

private:
//    Ui::mywin_5Class ui;
    QPushButton * m_button;
    QLineEdit * m_lineEdit;
    QPlainTextEdit * m_textEdit;
};

#endif // MYWIN_5_H

这是头文件

#include "mywin_5.h"

mywin_5::mywin_5(QWidget *parent)
    : QMainWindow(parent)
{
//    ui.setupUi(this);

    m_button = new QPushButton("Hello,Qt!",this);
    m_lineEdit = new QLineEdit(this);
    m_textEdit = new QPlainTextEdit(this);

    QVBoxLayout * layout1 = new QVBoxLayout(this);
    layout1->addWidget(m_lineEdit);
    layout1->addWidget(m_textEdit);
    layout1->addWidget(m_button);
    layout1->setSpacing(60);

    this->setLayout(layout1);
}

mywin_5::~mywin_5()
{

}
这是头文件实现的cpp文件

#include "mywin_5.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    mywin_5 w;
    w.setWindowTitle("my window");
    w.show();
    return a.exec();
}
这是主函数


为什么会得到这样的一个窗口呢,

Button为什么不见了
附件: 您没有浏览附件的权限,请 登录注册
2017-12-11 20:40
bks
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-2-19
  得分:0 
定义错误了 ,改为
QPushButton *m_button = new QPushButton("Hello,Qt!",this);
你的三个控件都是空的,窗口只显示一个布局,
去补一下c+的指针的使用
 m_button = new QPushButton("Hello,Qt!",this);
左边是指针,右边实实值,
正确的应是,左边是指针,右边是对应的地址
类似这样
int *p;
int a=100;
p=&a;
2018-02-19 11:28
小二哈呜呜呜
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-3-1
  得分:0 
因为你定义的类是继承于QMainWindow,不能直接设置setlayout,你需要定义一个QWidget的对象,然后将其设置为中心窗口部件,采用setCentralWidget();

具体代码实现如下:

{


    m_button = new QPushButton("Hello,Qt!",this);
      m_lineEdit = new QLineEdit(this);
      m_textEdit = new QPlainTextEdit(this);

      QVBoxLayout * layout1 = new QVBoxLayout(this);
      layout1->addWidget(m_lineEdit);
      layout1->addWidget(m_textEdit);
      layout1->addWidget(m_button);
      layout1->setSpacing(60);

   QWidget *widget1 =new QWidget;//这里是我添加的代码 注意加上头文件 # include<QWidget>
   widget1->setLayout(layout1);
   setCentralWidget(widget1);

}
2018-03-01 22:30
小二哈呜呜呜
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-3-1
  得分:0 
回复 3楼 小二哈呜呜呜
附件: 您没有浏览附件的权限,请 登录注册
2018-03-01 22:32
aladeng
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-10-11
  得分:0 
百度 “aladeng”,阿拉灯 aladeng
2018-10-11 22:54







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029854 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved