• 5264阅读
  • 3回复

(QWorkSpace?高手请进!!)如何通过信号和插槽将动态生成的窗口添加到maniWindow的workSpace? [复制链接]

上一主题 下一主题
离线oke8y
 
只看楼主 正序阅读 楼主  发表于: 2011-03-19
       MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
  //创建菜单栏
    setWindowTitle(tr("Workspace"));
    QMenu* menu =menuBar()->addMenu(tr("open"));
    QAction * action = new QAction(tr("other"),this);
    menu->addAction(action);    
     connect(action,SIGNAL(triggered()),workSpace,SLOT(newForm()));//连接插槽出问题了  ???
    workSpace = new QWorkspace;        //此处改为this  单击menu,,,新建的窗口无法显示
                                                               //如果不改,则workspace表示无此插槽函数
    setCentralWidget(workSpace);
}
定义一个插槽
void  MainWindow::newForm()
{
         MainWindow*mf=new MainWindow();
        setWindowTitle(tr("newWindow"));
        workSpace->addWidget(mf);//添加到workSpace
}


如果直接 写在构造函数里面如
      MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
  //创建菜单栏
    setWindowTitle(tr("Workspace"));
    QMenu* menu =menuBar()->addMenu(tr("open"));
    QAction * action = new QAction(tr("other"),this);
    menu->addAction(action);    
    workSpace = new QWorkspace;
    setCentralWidget(workSpace);
    //创建新窗口
         MainWindow*mf=new MainWindow();
        setWindowTitle(tr("newWindow"));
     workSpace->addWidget(mf);//添加到workSpace
}
可以创建成功

但是我想通过单击菜单 来弹出“不同”窗口 该怎样实现??
请各位大侠帮个忙啊!!!!
[ 此帖被oke8y在2011-03-19 13:47重新编辑 ]
离线oke8y
只看该作者 3楼 发表于: 2011-03-19
回 1楼(printfire) 的帖子
在线等!在不 ?求解决
离线oke8y
只看该作者 2楼 发表于: 2011-03-19
上面写的很明白了      
肯定mainwindow    
  那样也不行!

急啊

离线printfire

只看该作者 1楼 发表于: 2011-03-19
你的插槽是定义在哪个l类中的?如果是定义在MainWindow中的。那么连接应该改为
connect(action,SIGNAL(triggered()),this,SLOT(newForm()))
快速回复
限100 字节
 
上一个 下一个