所以我是新手使用Doxygen,我能够让它顺利运作.我能够记录我的类和结构,并完美地生成HTML文件.我遇到的问题是它不会解析我的main.cpp文件.所有的类和结构都有自己的.h和.cpp文件,它们处理得很好.如何让Doxygen为main.cpp制作文档?它没有.h文件,因为这是程序开始和结束的地方.我甚至都不知道要把什么放在主文件的.h文件中.我在Windows中使用Doxywizard.
编辑:
我把它放在main中,它会生成一个主页面:
/**
@mainpage
This is a test application.
@author Alex
@date 10/21/2010
@version 1.0
*/
Run Code Online (Sandbox Code Playgroud)
但是在函数原型的文件中,我有这个并且它没有被解析:
/**
@brief Error handler for the PDF writer.
It does nothing. It just has to exist.
*/
void error_handler (HPDF_STATUS error_no,
HPDF_STATUS detail_no,
void *user_data)
{
}
Run Code Online (Sandbox Code Playgroud) 我使用create-react-kotlin-app命令创建了一个应用,并且可以在Chrome中正常加载。我通过NPM添加了React Material UI包,并成功了。现在如何在组件中使用Material UI模块?
通常使用JavaScript,它很简单import Button from '@material-ui/core/Button',位于组件文件的顶部,但是Kotlin不喜欢这样。
如何将那条线翻译成Kotlin?我没有使用Gradle。
我有一个Qt主窗口,会弹出一个对话框,其中有一个OK和Cancel按钮.这个对话框有一个简单的微调器,当按下OK或Cancel时,要求用户输入一个应该返回主窗口的数字(对于取消,它只会发回-1).
我想在mainWindow.cpp中的信号中使用代码,如下所示:
void mainWindow::slot_openNumberDlg(){
// Create a new dialog
numberDlg dlg( this );
// Show it and wait for Ok or Cancel
if( dlg.exec() == QDialog::Accepted ){
return;
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果按下按钮时它被销毁,我如何将对话框中的微调器的值返回到主窗口?
我还考虑了一个替代解决方案,我将在mainWindow的构造函数中初始化对话框,但是直到一个信号激活mainWindow.cpp中的一个插槽才会显示它,如下所示:
// Create as pointer in main.h:
numberDlg *dlg;
// Initialize pointer and setup listener in constructor (main.cpp):
mainWindow::mainWindow(){
dlg = new numberDlg();
QObject::connect( dlg, SIGNAL( sig_retVal(int) ), ui->widget, SLOT( slot_showNum(int) ) );
}
// Make a function to handle show/close:
void mainWindow::slot_numberOpenClose(bool trigger){
if(trigger){
dlg->show();
} else { …Run Code Online (Sandbox Code Playgroud) 我使用libxml2进行XML解析。libxml网站上的示例代码很难遵循,并且似乎缺少一些细节。我通过Googling找到了以下代码,所以我什至都不认为这是正确的方法,但是它在我编写的示例学习程序中有效,但在本程序中却无效。我仍然不知道在C ++中使用libxml的正确方法,所以我在黑暗中运行,希望能找到有用的东西。
XML文件可以正确加载,并且此函数可以root->name正确输出,但是当它通过子级时,它只会text在XML 输出,cur->name我不知道为什么。我必须将计数器放在那里以阻止它进入无限循环。我在XML文件中的空白处读取了可能导致此问题的信息,但我不知道该怎么办。我只想要零件名称和ID。
xmlNode *cur = root;
cur = cur->xmlChildrenNode;
ofstream out;
out.open("errorlog.txt", ios::app);
out << "attempting reading current node\n";
out << "root: " << root->name << endl;
int counter = 0;
// advance until it hits stars
while(cur != NULL && counter < 10){
if ((!xmlStrcmp(cur->name, (const xmlChar *)"parts")))
break;
cur->next;
counter++;
}
out << "counter: " << counter << endl;
out << "child: " << cur->name << endl;
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的XML文件:
<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 我正在使用libxml2和C++.以下功能在此处崩溃return (char*)cur->content;.当我将其更改return (char*)cur->name;为时,它将返回attribute哪个是标签的名称.我想要的是1,2和3(基于C++代码下面的XML文件).我究竟做错了什么?
char* xml2sdf::getId(xmlNode* part){
xmlNode* cur = part->xmlChildrenNode;
// get the id
while (cur != NULL) {
if ( !xmlStrcmp(cur->name, (const xmlChar *)"attribute") ) {
xmlAttrPtr attr = cur->properties;
if( !xmlStrcmp( attr->children->content, (const xmlChar*)"id" ) ){
return (char*)cur->content;
}
}
cur = cur->next;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它正在解析的XML文件的一部分:
<part ref="part10" name="part10">
<attribute name="face">7</attribute>
<attribute name="id">1</attribute>
</part>
<part ref="part20" name="part20">
<attribute name="face">5</attribute>
<attribute name="id">2</attribute>
</part>
<part ref="part30" name="part30">
<attribute name="face">9</attribute>
<attribute name="id">3</attribute>
</part>
Run Code Online (Sandbox Code Playgroud) 这看起来微不足道,但使用 MFC 时,我总是会遇到一些愚蠢的微不足道的问题,从而导致我的工作流程停止。
我收到指向 afxcmn2.inl 第 352 行的“调试断言失败”错误:
_AFXCMN_INLINE int CComboBoxEx::AddString(LPCTSTR lpszString)
{ UNUSED_ALWAYS(lpszString); ASSERT(FALSE); return CB_ERR;}
Run Code Online (Sandbox Code Playgroud)
我试图在初始化时将一些字符串添加到组合框,如下所示:
BOOL myDialog::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
cb_direction.AddString(CString("North"));
}
Run Code Online (Sandbox Code Playgroud)
Google 上的大多数答案似乎都表明 AddString 发生在 OnInitDialog 之前,但这里的情况似乎并非如此。谷歌上的另一系列答案表明数据交换没有发生或者是错误的,但事实并非如此:
void myDialog::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_WHEDIT_DIR, cb_direction);
}
Run Code Online (Sandbox Code Playgroud)
另一个建议是组合框尚未创建,但是如果我使用以下代码禁用组合框,我不仅不会收到错误,而且它实际上可以工作并禁用该框!
BOOL myDialog::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
cb_direction.EnableWindow(FALSE);
}
Run Code Online (Sandbox Code Playgroud)
我已经清理了解决方案并重建了它。我不确定我还缺少什么。我想做的就是向组合框添加一个字符串,这在 .Net 中需要 2 秒(这个程序是几年前由其他人编写的,这就是为什么它在 MFC 而不是 .Net 中,但我离题了) 。
我有数据存储在 a 中CString,它需要由 XML 解析器库解析。问题是 XML 解析器接受一个CFile. 将 写出CString到文本文件然后将其重新加载到CFile. 有什么方法可以直接发送CString到CFile而不制作中间输出文件?