勇's profile尘埃落定PhotosBlogListsMore ![]() | Help |
|
尘埃落定满怀感恩,勇担责任。 April 22 c++解析文件/字符串1。读取文件,解析文件
ifstream in;
in.open(filename);
if(!in)
{
//打不开文件
}
else
{
in.getline(char *buf,streamsize num);
if(in)
{
string str(buf);//将字符数组赋给字符串
int j=str.find('/');
if(j=string::npos)
{
//找不到指定分隔符
}
else
{
//找到分隔符,将原是字符串分别赋给2个字符串,将所需字符串赋给字符数组,然后将字符数组转换为存储数据的数组
}
}
}
2。二维数组和一维数组的声明
正确声明:int a[3];//不可将数组的大小声明为变量
错误声明:int k=3;
int a[k];
如果想动态声明数组:
一维数组:
int *a;
a=new int[k];//这时k可以使变量
二维数组:
int **ptr=new int *[n];
for(i=0;i<n;i++)
{
*(ptr+i)=new int [m];
for(j=0;j<m;j++)
{
*(*(ptr+i)+k)=//赋值
}
} April 14 调试成功如何生成MySQL的配置文件my.cnf
SeLinux的配置问题。关于为什么不能正确加载libphp4.so文件。
(3)前2点是这次配置遇到的问题,前几次配置都是根据张微波的BLOG配置的,没有什么问题。 April 11 Linux下安装php+apache+mysql去年自己调试好了一次,现在一直在使用。今天去给师弟安装,乱七八糟的问题,郁闷。。。
等明天去把我安装好的那些文件拷过去试试,成功了再来写点心得... 模式与非模式的区别QWidegt的模式和非模式非常重要。
非模式窗口就是运行在应用程序中,对于任何其他窗口都是独立窗口,用show()调用。
模式窗口就是当它被调用而弹出的时候,它会阻塞这个应用程序,直到这个窗口被关闭,发生的其他任何处理或者交互才能继续运行,用exec()调用。
例如:
class MainWindow:public QMainWindow
{
......
}
void MainWindow::find()
//弹出一个非模式的窗口,将该非模式的窗口中的动作发出的信号和父窗口的槽联系起来。用户可以在FindDialog 和MainWindow之间切换
{
if(!finddialog)
{
FindDialog finddialog(this);//FindDialog是一个非模式的窗口。
connect(&finddialog,SIGNAL(),spreadsheet,SLOT());//
}
finddialog.show();//调用show(),raise(0,setActiveWindow()来确保这个窗口是可视的,在其他窗口之上并且是激活的
finddialog.raise();
finddialog.setActiveWindow();
}
void MainWindow::gotocell()//弹出一个模式窗口
{
GOTOCELL dialog(this);
if(dialog.exec())
{
.....
}
}
注意模式窗口的如下函数:reject(),accept()返回什么值。 April 10 貌似稍微搞懂了点QCanvas(1) 在项目的main()函数里,需要声明一个QCanvas对象,并设置其大小、颜色等等。 #include <qapplication.h> #include "form1.h" int main( int argc, char ** argv ) { QApplication a( argc, argv ); //声明QCanvas QCanvas canvas(300,180); canvas.setAdvancePeriod(30); canvas.setBackgroundColor(QColor(200,200,200)); //创建Form1的一个对象,Form1为一个QWidget Form1 w(canvas);//将canvas传递给Form1的构造函数 w.show(); a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); return a.exec(); } 需要注意的是Form1的构造函数,Form1是继承QWidget的,在其构造函数中应添加一个QCanvas &的声明。 (2)类的建立 #ifndef FORM1_H #define FORM1_H #define WINDOW_WIDTH 300; #define WINDOW_HEIGHT 180; #include <qvariant.h> #include <qwidget.h> #include <qcanvas.h> #include <qpen.h> #include <qcolor.h> class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QSpacerItem; class QPushButton;
class Frame : public QCanvasView//建一个Frame继承了QCanvasView { Q_OBJECT public: Frame(QCanvas&, QWidget* parent=0, const char* name=0, WFlags f=0); ~Frame(); private: QPainter * paint; };
class Form1 : public QWidget { Q_OBJECT
public: Form1(QCanvas&, QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );//Form1的构造函数中可以接收传递的QCanvas ~Form1();
QPushButton* pushButton1; int m_width; int m_height; void drawcanvas();
protected:
protected slots: virtual void languageChange(); private: QCanvas& canvas;//声明QCanvas的一个引用 Frame * frame;//声明Frame的一个对象 };
#endif // FORM1_H (3).cpp文件 我们的思路应该是利用form1.h中声明的2个类(一个是QCanvasView,一个是QWidget),首先在main()中将我们已经设置好的QCanvas赋给QWidget,在QWidget中实现一个新的QCanvasView,同时将已经赋给QWidget的QCanvas再赋给这个新的QCanvasView。 总结成一句话就是,要想使用QCanvas绘图,则必须使用QCancaView,在QCancaView放置QCanvas,然后在QCanvas上绘图。 #include "form1.h"
#include <qvariant.h> #include <qpushbutton.h> #include <qlayout.h> #include <qtooltip.h> #include <qwhatsthis.h> #include <qimage.h> #include <qpixmap.h> Form1::Form1(QCanvas& c, QWidget* parent, const char* name, WFlags fl ) : QWidget( parent, name, fl ),canvas(c)//将c赋给canvas,这里的c则是在main(0中传递下来的canvas. { if ( !name ) setName( "Form1" );
m_width=WINDOW_WIDTH; m_height=WINDOW_HEIGHT;
pushButton1 = new QPushButton( this, "pushButton1" ); pushButton1->setGeometry( QRect( 230, 420, 86, 30 ) ); languageChange(); resize( QSize(600, 480).expandedTo(minimumSizeHint()) ); clearWState( WState_Polished ); //这里重新实现一个QCanvawView,将在main()中设置好的canvas放在QCanvasView中 frame=new Frame(canvas,this);//将main()中这使得QCanvas放到我们的一个QCanvasView中 frame->setGeometry(QRect(7,6,m_width+4,m_height+4)); frame->viewport()->setBackgroundColor(gray); frame->show(); drawcanvas(); }
void Form1::drawcanvas() { QCanvasPolygonalItem* i = new QCanvasEllipse(20,20,&canvas);//在canvas中绘图 i->setBrush(red); i->move(50,60); i->setZ(rand()%256); i->show(); } Form1::~Form1() { } Frame::Frame(QCanvas& c, QWidget* parent,const char* name, WFlags f) :QCanvasView(&c,parent,name,f) { } Frame::~Frame() { } void Form1::languageChange() { setCaption( tr( "Form2" ) ); pushButton1->setText( tr( "pushButton1" ) ); } (4) 记得写析构函数 |
|
||||
|
|