谢谢刚才各位的帮助,可惜刚接触Qt才2,3天,还是不能完全理解各位的意思~~~
还是求哪位大神不吝给个例子程序吧,还是刚才要实现的那个功能,在一个窗口上有一个按钮(最好能控制按钮在窗口的位置),然后点击button会弹出一个dialog来~~
ps:或者哪位大神可以稍微修改下我的程序,让这个能跑通,实现这个简单的功能~
- C/C++ code
头文件mainwindow.h:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QtGui>#include <QMainWindow>namespace Ui { class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private slots: void open();private: Ui::MainWindow *ui; QPushButton *button; QDialog *dialog;};#endif // MAINWINDOW_H源文件mainwin.cpp:#include "mainwindow.h"#include "ui_mainwindow.h"#include <QtGui>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); QPushButton *button =new QPushButton("Open"); //button->setCheckable(true); QObject::connect(button, SIGNAL(clicked()), this, SLOT(open())); QGridLayout *layout = new QGridLayout; layout->addWidget(button,0,0); setLayout(layout);}MainWindow::~MainWindow(){ delete ui;}void MainWindow::open() { dialog->show(); }主函数main.cpp:#include <QtGui/QApplication>#include "mainwindow.h"#include <QtGui>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
------解决方案--------------------
又是你,说一个不用设置layout的方法
1,建立一个新的项目
2,在mainwindow.ui里拖放一个push button,给它起个名字"button0"
3,右键点击这个button,选择"转到槽",选择clicked(),确认。这时候你就转到这个button被clicked过后的相应slot部分了,你在这段代码上写你要做的事情,比如dialog->show();
另外的不用.ui的方法要设置layout很麻烦,qt自带的例子里不用.ui的比较少但是还是有的,你好好找找学习一下,那个不用ui的方法很有助于你理解整个框架和流程
------解决方案--------------------
你的 mainWindow.cpp里有两个错误
1. 给pushButton一个父对象 代码改为:QPushButton *button =new QPushButton("Open",this);
2. dialog 没有初始化 代码改为
void MainWindow::open()
{
dialog = new QDialog();
dialog->show();
}
我已调试通过.