connect(m_HelpAct, SIGNAL(triggered()), this, SLOT(OnHelp()));
实现槽函数:
void CXXX::OnHelp(){
QString runPath = QCoreApplication::applicationDirPath(); //获取exe路劲。
QString helpName = "帮助文档pdf";
QString helpPath = QString("%1/%2")arg(runPath)arg(helpName);
QFile bfilePath(helpPath);
if(!bfilePathexists()){
return;
}
QString filePath = "file:///" + helpPath; //打开文件夹用filse:///,打开网页用http://
QDesktopServices::openUrl(QUrl::fromLocalFile(filePath));
}
呵呵,多半是因为你的对象这时还没有实例化。
比如
qWidget a;
a = new QWidget(this);
你多半没有第二句对a进行实例化。
qt切换界面只显示一个方法。
1、建立一个Qwidget工程,在ui里面添加一个按钮button和一个标签label,右键项目名称,在d出的选项中选择添加新文件。
2、选择QT->Qt设计师界面类,点击右下方choose,选择widget,点击右下方下一步,自己给这个窗体取一个名字,点击下一步(如此便创建成功第二个界面和它的头文件和源文件)。
3、重复上面2-5步建立第三个窗体文件,最后工程里面应该一共包括有以下文件,工程里widgetui是第一个界面,secondform是第二个界面,thirdform是第三个界面
4、在第二个、第三个界面中放入控件第二个界面放入两个按钮pushbutton和一个标签label。第三个界面放入一个按钮pushbutton和一个LCDnumber。各个窗体头文件定义,所有槽函数定义对应于要实现的功能,对应于各个按钮按下后要实现的事件,在第一个Widget的头文件中定义一个处理跳转到第二个界面的槽函数doprocessclickgotosecondform(bool)和一个接收来自第二个界面发送请求信号的槽函数doprocesssecondformrequest(QString)。在第二个窗体头文件里定义跳转到第一个和第三个窗体的槽函数doProcessClickBackToFirstForm(bool)、doProcessClickGoToThirdForm(bool),还有从第三个界面发送来的显示第二个界面的槽函数doProcessShowSecondForm()。第三个窗体头文件中定义一个跳转到第二个界面的槽函数doprocessbacktosecondform()和一个定时器的超时槽函数doprocesstimeout()。
5、对各个槽函数的实现,在各个窗体对应的源程序中进行实现,对所有代码都有详细的注释和说明第一个窗体。QT多个窗体切换显示就实现,第一个界面的下方按钮可以点击跳转到第二个界面,第二个界面下方可以选择跳转到第一个或者到第三个界面,第三个界面下方有一个返回第二个界面的按钮,实现各个页面的跳转显示且每次只会显示一个界面。
C source file的实现。
#include "objh"
int main(const int argc, const char argv){
void temp_obj = getObj(100);
printString(temp_obj);//实现C语言调用QT/C++UI界面
return (0);
}
写一个C++ source file和c source file都可以共同包含的头文件,如下所示。
#include <stdinth>
#ifdef __cplusplus
class Obj{
public:
Obj(int32_t a=50)
~Obj();
std::string toString();
private:
int32_t k;
};
#endif
#ifdef __cplusplus
extern "C" {
#endif
void getObj(int32_t a);
void destroyObj(void obj);
void printString(void obj);
#ifdef __cplusplus
}
#endif
C++ source file的实现,其中C语言函数是供C source file调用的。
#include <iostream>
#include <sstream>
#include <iomanip>
#include <stdinth>
#include "objh"
Obj::Obj(int32_t a){
k = a << 1;
}
Obj::~Obj(){
/ don't really need to do anything here /
/ k = 0 only for example purposes /
k = 0;
}
std::string Obj::toString(){
std::ostringstream os;
os << "Obj is currently: " << this->k << std::endl;
return osstr();
}
void getObj(int32_t a){
Obj out = new Obj(a);
return ((void)out);
}
void destroyObj(void obj){
delete (((Foo)obj));
}
void printString(void obj){
std::string s = ((Obj)obj)->toString();
std::cout << s;
}
Makefile
make file的实现。
CC = gcc
CXX = g++
CFLAGS = -O0 -g
CXXFLGS = -00 -g
OBJ = main obj
OBJS = $(addsuffix o,$(OBJ))
all:
make compile
compile:
make $(OBJS)
make objexe
fooexe: $(OBJS)
$(CXX) -o fooexe $(OBJS)
maino: mainc
$(CC) -c -o maino mainc
objo: objcpp
$(CXX) -c -o objo objcpp
clean:
rm -rf $(OBJS) objexe dSYM
QPalette pal;
pal = ui->textBrowser->palette();
palsetColor(QPalette::Base, QColor(0,255,0));//改变背景色
ui->textBrowser->setPalette(pal);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)