|
1Qter豆
我大学学的电子信息,一直都是玩单片机,一直想给自己设计的电路设计一个上位机,该开始我学c++,学mfc,感觉编程很不灵,什么都是要死记硬背他的机制,看到那个WinMain函数,窗口句柄,消息结构,消息循环,让俺觉得很蛋疼。后来我认识了qt,我买了一本《qt gui c++编程第二版》紧锣密鼓的开始学习,我看到了自己编的界面,很欣喜,我期待我的上位机的出现。但学习的过程也遇到这样那样的问题,希望高手们不吝赐教,主要都是槽函数不存在的问题,用的qt4.8.3。
1,textChanged("clinked");槽不存在。
#include <QApplication>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLineEdit>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QWidget *window = new QWidget;
window->setWindowTitle("My Test");
QLineEdit *label = new QLineEdit("Wait");
QPushButton *button = new QPushButton("Test");
QObject::connect(button,SIGNAL(clicked()),
label,SLOT(setText("Run"))
);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(label);
layout->addWidget(button);
window->setLayout(layout);
window->show();
return app.exec();
}
2,QMainWindow::about()槽不存在
//mainwindow.h
#include <QApplication>
#include <QMainWindow>
#include <QAction>
#include <QToolBar>
#include <QMenu>
#include <QMenuBar>
#include <QTextEdit>
#include <QMessageBox>
class QAction;
class QToolBar;
class QMenu;
class QTextEdit;
class QMenuBar;
class MainWindow : public QMainWindow
{
public:
MainWindow(QWidget *parent = 0);
//~MainWindow();
private slots:
void about();
private:
void creatAction();
//1,创建设置动作
QAction *newAction;
QAction *openAction;
QAction *saveAction;
QAction *saveAsAction;
QAction *aboutAction;
QAction *aboutQtAction;
//2,创建菜单并把动作加入菜单
QMenu *fileMenu;
QMenu *editMenu;
QMenu *toolsMeu;
QMenu *optionsMenu;
QMenu *helpMenu;
//3,创建工具栏并把动作加入菜单
QToolBar *fileToolBar;
QToolBar *editToolBar;
//创建中间窗口部件
QTextEdit *textEdit;
};
//mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) MainWindow(parent){ creatAction(); //创建菜单并把动作加入菜单 QMenu *fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAction); fileMenu->addAction(openAction); fileMenu->addAction(saveAction);
QMenu *editMenu = menuBar()->addMenu(tr("&Edit"));
QMenu *toolsMeu = menuBar()->addMenu(tr("&Tools"));
QMenu *optionsMenu = menuBar()->addMenu(tr("&Options"));
menuBar()->addSeparator();
QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(aboutAction); helpMenu->addAction(aboutQtAction);
//创建工具栏并把动作加入菜单 QToolBar *fileToolBar = addToolBar(tr("&File")); fileToolBar->addAction(newAction); fileToolBar->addAction(openAction); fileToolBar->addAction(saveAction);
QTextEdit *textEdit = new QTextEdit; setCentralWidget(textEdit);}
void MainWindow::creatAction(){ //创建动作 newAction = new QAction(tr("&New"),this); newAction->setIcon(QIcon(":/image/new"));//设置菜单图标 newAction->setShortcut(QKeySequence::New);//设置快捷键 //newAction->// openAction = new QAction(tr("&Open"),this); openAction->setIcon(QIcon(":/image/open")); openAction->setShortcut(QKeySequence::Open);
saveAction = new QAction(tr("&Save"),this); saveAction->setIcon(QIcon(":/image/save")); saveAction->setShortcut(QKeySequence::Save);
aboutAction = new QAction(tr("&About"),this); connect(aboutAction,SIGNAL(triggered()),this,SLOT(about()));
aboutQtAction = new QAction(tr("About &Qt"),this); connect(aboutQtAction,SIGNAL(triggered()),qApp,SLOT(aboutQt()));}
void MainWindow::about(){ QMessageBox::about(this, tr("About Spreadsheet"), tr("<h2>Spreadsheet 1.1</h2>" "<p>Copyright © 2008 Software Inc." "<p>Spreadsheet is a small application that " "demonstrates QAction, QMainWindow, QMenuBar, " "QStatusBar, QTableWidget, QToolBar, and many other " "Qt classes."));}两个程序都是我自己写的,书上的代码都木有问题,我的代码老是某某槽函数不存在,我一直找不到答案。希望在这里得到解决。
|
最佳答案
查看完整内容
....但我始终没有想明白如果让一个QPushButton的按动去改变一个QLabel的显示应该如何去实现....
例如:QPushButton *pushButton;
一个label:QLabel *label;
一个槽函数slots: void labelSlots();
在构造函数中连接:connect(this, SIGNAL(clicked()), pushButton, SLOT(labelSlots()));这样就将pushButton的clicked信号响应函数连接到了void labelSlots();了。
然后你在void labelSlots();里面随便设置label显示什么了,例如: ...
|